计算时间差:
CAST ( CAST ( DATEDIFF ( ss, StartTime, ConcludeTime ) / ( 60 * 60 * 24 ) AS INT ) AS VARCHAR ) + ‘天’ + CAST ( CAST ( DATEDIFF ( ss, StartTime, ConcludeTime ) % 86400 / 3600 AS INT ) AS VARCHAR ) + ‘小时’ + CAST ( CAST ( DATEDIFF ( ss, StartTime, ConcludeTime ) % 3600 / 60 AS INT ) AS VARCHAR ) + ‘分’ + CAST ( CAST ( DATEDIFF ( ss, StartTime, ConcludeTime ) % 60 AS INT ) AS VARCHAR ) + ‘秒’ LengthOfTime
日期函数
函数 | 含义 | 举例 |
---|---|---|
GETDATE | 获取当前系统时间 | select getdate() 结果:2019-07-26 09:59:19.720 |
DATEADD | 将指定数值添加到指定日期部分后的日期 | select dateadd(dd,4,getdate()); 结果:2019-07-30 10:03:35.427(4天后) |
DATEDIFF | 两个指定日期指定部分的时间差,返回结果为int型 | select datediff(mm,‘05/10/1996’,getdate()) 结果:278 (1996年5月10日 至今的月数) |
DATENAME | 日期中指定部分的字符串形式 | //1996年5月10日的星期数 select datename(dw,‘05/10/1996’) 结果:星期五 |
DATEPART | 日期指定部分的整数形式 | select datepart(day,‘05/10/1996’) 结果:10 |
MONTH | 返回指定日期的月 | select month(‘02/10/2019’) 结果:2 |
YEAR | 返回指定日期的年 | select year(‘02/10/2019’) 结果:2019 |
GETDATE
select getdate()
结果:2019-07-26 09:59:19.720
DATEADD
//四天后
select dateadd(dd,4,getdate());
结果:2019-07-30 10:03:35.427
//四个月后
select dateadd(mm,4,getdate());
结果:2019-11-26 10:05:04.997
//四个月之前
select dateadd(mm,-4,getdate());
结果:2019-03-26 10:05:50.920
//四年之前
select dateadd(YYYY,-4,getdate());
结果:2015-07-26 10:07:42.210
DATEDIFF
//1996年5月10日 至今的月数
select datediff(mm,'05/10/1996',getdate())
结果:278
//1996年5月10日 至今的年数
select datediff(yyyy,'05/10/1996',getdate())
结果:23
//1996年5月10日 至今的秒数
select datediff(ss,'05/10/1996',getdate())
结果:732449613
DATENAME
//1996年5月10日的星期数
select datename(dw,'05/10/1996')
结果:星期五
DATEPART
select datepart(day,'05/10/1996')
结果:10
MONTH
select MONTH('02/10/2019')
结果:2
YEAR
select year('02/10/2019')
结果:2019
select SUBSTRING(convert(varchar(10),getdate(),112),0,7)+'01'--每个月第一天
select convert(varchar(10),DATEADD(day,-1,SUBSTRING(convert(varchar(10),DATEADD(month,1,getdate()),112),0,7)+'01'),112)--每个月最后一天
日期转换:
-
- Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM
- Select CONVERT(varchar(100), GETDATE(), 1): 05/16/06
- Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16
- Select CONVERT(varchar(100), GETDATE(), 3): 16/05/06
- Select CONVERT(varchar(100), GETDATE(), 4): 16.05.06
- Select CONVERT(varchar(100), GETDATE(), 5): 16-05-06
- Select CONVERT(varchar(100), GETDATE(), 6): 16 05 06
- Select CONVERT(varchar(100), GETDATE(), 7): 05 16, 06
- Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46
- Select CONVERT(varchar(100), GETDATE(), 9): 05 16 2006 10:57:46:827AM
- Select CONVERT(varchar(100), GETDATE(), 10): 05-16-06
- Select CONVERT(varchar(100), GETDATE(), 11): 06/05/16
- Select CONVERT(varchar(100), GETDATE(), 12): 060516
- Select CONVERT(varchar(100), GETDATE(), 13): 16 05 2006 10:57:46:937
- Select CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967
- Select CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47
- Select CONVERT(varchar(100), GETDATE(), 21): 2006-05-16 10:57:47.157
- Select CONVERT(varchar(100), GETDATE(), 22): 05/16/06 10:57:47 AM
- 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(), 100): 05 16 2006 10:57AM
- Select CONVERT(varchar(100), GETDATE(), 101): 05/16/2006
- Select CONVERT(varchar(100), GETDATE(), 102): 2006.05.16
- Select CONVERT(varchar(100), GETDATE(), 103): 16/05/2006
- Select CONVERT(varchar(100), GETDATE(), 104): 16.05.2006
- Select CONVERT(varchar(100), GETDATE(), 105): 16-05-2006
- Select CONVERT(varchar(100), GETDATE(), 106): 16 05 2006
- Select CONVERT(varchar(100), GETDATE(), 107): 05 16, 2006
- Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49
- Select CONVERT(varchar(100), GETDATE(), 109): 05 16 2006 10:57:49:437AM
- Select CONVERT(varchar(100), GETDATE(), 110): 05-16-2006
- Select CONVERT(varchar(100), GETDATE(), 111): 2006/05/16
- Select CONVERT(varchar(100), GETDATE(), 112): 20060516
- Select CONVERT(varchar(100), GETDATE(), 113): 16 05 2006 10:57:49:513
- Select CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547
- Select CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 10:57:49
- Select CONVERT(varchar(100), GETDATE(), 121): 2006-05-16 10:57:49.700
- Select CONVERT(varchar(100), GETDATE(), 126): 2006-05-16T10:57:49.827
- Select CONVERT(varchar(100), GETDATE(), 130): 18 ??? ??? 1427 10:57:49:907AM