函数 参数/功能
GetDate( ) 返回系统目前的日期与时间
DateDiff (interval,date1,date2) 以interval 指定的方式,返回date2 与date1两个日期之间的差值 date2-date1
DateAdd (interval,number,date) 以interval指定的方式,加上number之后的日期
DatePart (interval,date) 返回日期date中,interval指定部分所对应的整数值
DateName (interval,date) 返回日期date中,interval指定部分所对应的字符串名称
参数 interval的设定值缩写(Sql Server)说明如下:
Year Yy 年 1753 ~ 9999
Quarter Qq 季 1 ~ 4
Month Mm 月1 ~ 12
Day of year Dy 一年的日数,一年中的第几日 1-366
Day Dd 日,1-31
Weekday Dw 一周的日数,一周中的第几日 1-7
Week Wk 周,一年中的第几周 0 ~ 51
Hour Hh 时0 ~ 23
Minute Mi 分钟0 ~ 59
Second Ss 秒 0 ~ 59
Millisecond Ms 毫秒 0 ~ 999
实例:
1.显示本月第一天
select dateadd(mm,datediff(mm,0,getdate()),0) --返回:2018-02-01 00:00:00.000
select convert(datetime,convert(varchar(8),getdate(),120)+'01',120) --返回:2018-02-01 00:00:00.000
2.显示本月最后一天
select dateadd(day,-1,convert(datetime,convert(varchar(8),dateadd(month,1,getdate()),120)+'01',120)) --返回:2018-02-28 00:00:00.000
select dateadd(ms,-3,dateadd(mm,datediff(m,0,getdate())+1,0)) --返回:2018-02-28 23:59:59.997
3.上个月的最后一天
select dateadd(ms,-3,dateadd(mm,datediff(mm,0,getdate()),0)) --返回:2018-01-31 23:59:59.997
4.本月的第一个星期一
select dateadd(wk,datediff(wk,0, dateadd(dd,6-datepart(day,getdate()),getdate())),0) --返回:2018-02-05 00:00:00.000
5.本年的第一天
select dateadd(yy,datediff(yy,0,getdate()),0) --返回:2018-01-01 00:00:00.000
6.本年的最后一天
select dateadd(ms,-3,dateadd(yy,datediff(yy,0,getdate())+1,0)) --返回:2018-12-31 23:59:59.997
7.去年的最后一天
select dateadd(ms,-3,dateadd(yy,datediff(yy,0,getdate()),0)) --返回:2017-12-31 23:59:59.997
8.本季度的第一天
select dateadd(qq,datediff(qq,0,getdate()),0) --返回:2018-01-01 00:00:00.000
9.本周的星期一
select dateadd(wk,datediff(wk,0,getdate()),0) --返回:2018-02-12 00:00:00.000
10.获取当月总天数:
select datediff(dd,getdate(),dateadd(mm, 1, getdate())) --返回:28
11.获取当前为星期几
select datename(weekday, getdate()) --返回:星期日
12. dateadd 在向指定日期加上一段时间的基础上,返回新的 datetime 值
例如:向日期加上2天
select dateadd(day,2,'2018-02-11') --返回:2018-02-13 00:00:00.000
13. datediff 返回跨两个指定日期的日期和时间边界数。
select datediff(day,'2018-02-01','2018-02-11') --返回:10
14. datepart 返回代表指定日期的指定日期部分的整数。
SELECT DATEPART(month, '2018-02-11') --返回 2
年为year,月为month,日为day,小时hour,分为minute,秒为second
15. datename 返回代表指定日期的指定日期部分的字符串
SELECT datename(weekday, '2018-02-11') --返回:星期日
使用日期格式化函数:
Select CONVERT(varchar(100), GETDATE(), 0):
02 11 2018 2:46PM
Select CONVERT(varchar(100), GETDATE(), 1):
02/11/18
Select CONVERT(varchar(100), GETDATE(), 2):
18.02.11
Select CONVERT(varchar(100), GETDATE(), 3):
11/02/18
Select CONVERT(varchar(100), GETDATE(), 4):
11.02.18
Select CONVERT(varchar(100), GETDATE(), 5):
11-02-18
Select CONVERT(varchar(100), GETDATE(), 6):
11 02 18
Select CONVERT(varchar(100), GETDATE(), 7):
02 11, 18
Select CONVERT(varchar(100), GETDATE(), 8):
14:46:32
Select CONVERT(varchar(100), GETDATE(), 9):
02 11 2018 2:46:32:067PM
Select CONVERT(varchar(100), GETDATE(), 10):
02-11-18
Select CONVERT(varchar(100), GETDATE(), 11):
18/02/11
Select CONVERT(varchar(100), GETDATE(), 12):
180211
Select CONVERT(varchar(100), GETDATE(), 13):
11 02 2018 14:46:32:067
Select CONVERT(varchar(100), GETDATE(), 14):
14:46:32:067
Select CONVERT(varchar(100), GETDATE(), 20):
2018-02-11 14:46:32
Select CONVERT(varchar(100), GETDATE(), 21):
2018-02-11 14:46:32.067
Select CONVERT(varchar(100), GETDATE(), 22):
02/11/18 2:46:32 PM
Select CONVERT(varchar(100), GETDATE(), 23):
2018-02-11
Select CONVERT(varchar(100), GETDATE(), 24):
14:46:32
Select CONVERT(varchar(100), GETDATE(), 25):
2018-02-11 14:46:32.067
Select CONVERT(varchar(100), GETDATE(), 100):
02 11 2018 2:46PM
Select CONVERT(varchar(100), GETDATE(), 101):
02/11/2018
Select CONVERT(varchar(100), GETDATE(), 102):
2018.02.11
Select CONVERT(varchar(100), GETDATE(), 103):
11/02/2018
Select CONVERT(varchar(100), GETDATE(), 104):
11.02.2018
Select CONVERT(varchar(100), GETDATE(), 105):
11-02-2018
Select CONVERT(varchar(100), GETDATE(), 106):
11 02 2018
Select CONVERT(varchar(100), GETDATE(), 107):
02 11, 2018
Select CONVERT(varchar(100), GETDATE(), 108):
14:46:32
Select CONVERT(varchar(100), GETDATE(), 109):
02 11 2018 2:46:32:067PM
Select CONVERT(varchar(100), GETDATE(), 110):
02-11-2018
Select CONVERT(varchar(100), GETDATE(), 111):
2018/02/11
Select CONVERT(varchar(100), GETDATE(), 112):
20180211
Select CONVERT(varchar(100), GETDATE(), 113):
11 02 2018 14:46:32:067
Select CONVERT(varchar(100), GETDATE(), 114):
14:46:32:067
Select CONVERT(varchar(100), GETDATE(), 120):
2018-02-11 14:46:32
Select CONVERT(varchar(100), GETDATE(), 121):
2018-02-11 14:46:32.067
Select CONVERT(varchar(100), GETDATE(), 126):
2018-02-11T14:46:32.067
Select CONVERT(varchar(100), GETDATE(), 130):
26 ????? ?????? 1439 2:46:32:067PM
Select CONVERT(varchar(100), GETDATE(), 131):
26/05/1439 2:46:32:067PM