SQL日期和时间函数
简介:本文将介绍在数据库中,如何使用SQL日期和时间函数对时间进行处理。
1 DATEADD()
函数
此函数将数字(有符号整数)添加到输入日期的日期部分,并返回修改后的日期/时间值。
1.1 函数语法
1 | DATEADD (datepart, number ,date) |
datepart
要增加日期/时间的单位。下表列出了一些常用的datepart参数。
datepart | 缩写形式 |
---|---|
year | yy,yyyy |
month | mm,m |
day | dd,d |
week | wk,ww |
weekday | dw,w |
hour | hh |
minute | mi,n |
second | ss,s |
quarter | qq,q |
提示
quarter
为一季度。
number
一个表达式,若为小数将截断小数部分。
date
修改前的日期。
1.2 函数用法
当前日期往后推1年:
1 | SELECT GETDATE() --当前时间:2021-12-25 01:37:10.537 |
当前时间往前推5小时:
1 | SELECT GETDATE() --当前时间:2021-12-25 01:40:11.030 |
2 DATEDIFF()
函数
此函数返回指定开始时间和结束时间之间的时间跨度。
2.1 函数语法
1 | DATEDIFF (datepart ,startdate ,enddate) |
datepart
要返回时间跨度的单位。下表列出了一些常用的datepart参数。
datepart | 缩写形式 |
---|---|
year | yy,yyyy |
month | mm,m |
day | dd,d |
week | wk,ww |
hour | hh |
minute | mi,n |
second | ss,s |
quarter | qq,q |
提示
quarter
为一季度。
startdate
开始时间。
enddate
结束时间。
注意
1、DATEDIFF()
函数返回值为int
;
2.2 函数用法
1 | SELECT DATEDIFF(YEAR,'2020-11-27 23:49:13.660','2021-12-27 08:49:30.220') --运行结果:1 |
3 DATEPART()
函数
此函数返回指定日期的指定部分整数。
3.1 函数语法
1 | DATEPART ( datepart , date ) |
datepart
返回表示 date 参数的特定部分的整数。下表列出了一些常用的datepart参数。
datepart | 缩写形式 |
---|---|
year | yy,yyyy |
month | mm,m |
day | dd,d |
week | wk,ww |
hour | hh |
minute | mi,n |
second | ss,s |
quarter | qq,q |
提示
quarter
为一季度。
date
需要获取的日期。
3.2 函数用法
1 | SELECT DATEPART(YEAR,'2021-12-28 02:13:37.010') --运行结果:2021 |
值得注意的是:
1、datepart 为WEEK
时,返回的结果为这一年的第几周;
2、datepart 为WEEKDAY
时,返回的是星期几(星期日为第一天),故星期二会返回3
。
4 DATENAME()
函数
此函数返回表示指定日期的指定格式的字符串(nvarchar
)。
4.1 函数语法
1 | DATENAME ( datepart , date ) |
DATENAME()
与DATEPART()
函数参数类似。
4.2 函数语法
1 | SELECT DATENAME(YEAR,'2021-12-28 00:57:00.123') --运行结果:2021 |
值得注意的是:
1、DATEPART()
函数返回的数据类型为int
,而DATENAME()
函数返回的数据类型为nvarchar
;
2、datepart 为WEEKDAY
时,DATEPART()
函数返回数值3
,而DATENAME()
函数返回字段星期二
。
5 参考资料
微软官方文档:https://docs.microsoft.com/zh-cn/sql/t-sql/functions/dateadd-transact-sql?view=sql-server-ver15