sql 常用内置函数
- 获取服务器时间
select getdate() Select CONVERT(varchar(100), GETDATE(), 23): 2006-05-16 Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47 Select CONVERT(varchar(100), GETDATE(), 25): 2006-05-16 10:57:47.250 Select CONVERT(varchar(100), GETDATE(), 102): 2006.05.16 Select CONVERT(varchar(100), GETDATE(), 111): 2006/05/16 Select CONVERT(varchar(100), GETDATE(), 112): 20060516 Select CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 10:57:49
注:如果对日期精确度需要达到毫秒级及其以下的,请使用datetime2(3)类型,括号内为保留3位毫秒精度 - 日期操作
日期获取:DATENAME(datepart,date) SELECT DATENAME(yy, '2021/01/06'):2021 日期加减:DATEADD(datepart,number,date) SELECT DATEADD(DD,-1, '2021-07-07'):2021-07-06 00:00:00.000 日期差值:DATEDIFF(datepart,date1,date2):date2-date1 SELECT DATEDIFF(''d'','2003-01-01','2003-01-02'):1 SELECT DATEDIFF(''d'','2003-01-02','2003-01-01'):-1
datepart 缩写 datepart 缩写 年 yy, yyyy,year 星期 dw, w 季度 qq, q 小时 hh 月 mm, m 分钟 mi, n 年中的日 dy, y 秒 ss, s 日 dd, d 毫秒 ms 周 wk, ww 微妙 mcs 纳秒 ns - 定位字符
select CHARINDEX('1','123'):1 select CHARINDEX('222','123'):0
- 截断
SUBSTRING('123',1,2) 结果:12 LEFT('123',1) 结果:1 RIGHT('123',1) 结果:3
- 倒置
REVERSE('123') 结果:321
- 长度测量
LEN('123') 结果:3
- 替换
REPLACE('123','1','a')--在123中查找1并将其替换成a 结果:a23 STUFF('123',1,2,'a')--在123中从位置1截取2个单位的字符,并将其替换成a 结果:a3 替换空格、回车等 REPLACE(REPLACE(REPLACE(REPLACE(column,CHAR(10),''),CHAR(13),''),CHAR(32),''),CHAR(9),'')
- 获取当前登录用户
USER_ID(),以获取与当前连接关联的数据库用户 ID。 USER_NAME(),以获取与数据库用户 ID 关联的数据库用户名
- 转换数据类型
select CAST('123' as int) -- 123 select CONVERT(int, '123') -- 123
- 获取自增主键
--单行 select @@identity --批量 create table #test ( [id] [bigint] IDENTITY(1,1) NOT NULL, [name] [nvarchar](50) NULL ) DECLARE @batchInsertedIds TABLE ( ID bigint ) INSERT INTO #test([name]) OUTPUT INSERTED.id INTO @batchInsertedIds(ID) select [name] from #test select * from #test select * from @batchInsertedIds
- 分页
ROW_NUMBER() OVER(PARTITION BY Column ORDER BY column ASC) AS rownum
- 拼接
STUFF(( SELECT ';' +column FROM table WHERE 1=1 FOR XML PATH('')), 1, 1, '')