日期函数是数据库中经常需要使用到的,本期将常用的几个日期函数给小伙伴做详
细的介绍。
GETDATE()
GETDATE()函数用于返回当前数据库系统的日期和时间,返回值的类型为 datetime。
返回值舍入到最近的秒小数部分,精度为.333 秒数据库十七偏移量不包含在内。
SELECT GETDATE()
GETUTCDATE()
GETUTCDATE()函数返回当前 UTC(世界标准时间)日期值,即格林尼治时间(GMT)
SELECT GETUTCDATE()
YEAR()
YEAR()函数以 int 数据类型的格式返回特定日期的年度信息。其语法格式为YEAR(date 数据)。
SELECT YEAR(GETDATE())
注意:函数之间只要符合语法规范是可以嵌套的。
MONTH()
MONTH()函数以 int 数据类型的格式返回特定日期的月份信息。其语法格式为
MONTH(date 数据)。
SELECT MONTH(GETDATE())
DAY()
DAY()函数以 int 数据类型的格式返回特定日期的天数信息。其语法格式为
DAY(date 数据)。
SELECT DAY(GETDATE())
DATEPART(dp,d)
DATEPART(dp,d)函数返回指定日期中相应的部分的整数值。
DATEPART 语法格式
DATEPART( datepart , date 数据 )
datepart 取值
年度 YEAR、YYYY、YY
SELECT DATEPART(YEAR,GETDATE())
-- 2023
月份 MONTH、MM、M
SELECT DATEPART(MONTH,GETDATE())
-- 10
日期 DAY、DD、D
SELECT DATEPART(DAY,GETDATE())
-- 24
周 WEEK、WK、WW
SELECT DATEPART(WEEK,GETDATE())
-- 43 (一年中的第 43 周)
每周星期几 WEEKDAY、DW
SELECT DATEPART(WEEKDAY,GETDATE())
-- 2 (是从星期日开始计算往后的第几天)
季度 QUARTER、QQ、Q
SELECT DATEPART(QUARTER,GETDATE())
-- 3
一年中第几天 DAYOFYEAR、DY、Y
SELECT DATEPART(DAYOFYEAR,GETDATE())
-- 327
小时 HOUR、HH
SELECT DATEPART(HOUR,GETDATE())
-- 10
分钟 MINUTE、MI、N
SELECT DATEPART(MINUTE,GETDATE())
-- 21
秒 SECOND、SS、SS
SELECT DATEPART(SECOND,GETDATE())
-- 40
毫秒 MILLISECOND、MS
SELECT DATEPART(MILLISECOND,GETDATE())
-- 100
DATENAME(dp,d)
DATENAME(dp,d)函数返回指定日期中相应的部分的字符串,用法与 DATEPART类似。
SELECT DATENAME(MONTH,GETDATE())
-- 10
SELECT DATENAME(WEEKDAY,GETDATE())
-- 星期二
SELECT DATENAME(DAY,GETDATE())
-- 24
SELECT DATENAME(WEEK,GETDATE())
-- 43 一年中的第 7 周
SELECT DATENAME(DAYOFYEAR,GETDATE())
-- 327 一年中的第 45 天
DATEADD(dp,num,d)
DATEADD(dp,num,d)函数用于执行日期的加运算,返回指定日期值加上一个时间
段后的新日期。dp 指定日期中进行加法运算的部分值,例如:YEARMONTH,DAY,HOUR,MINUTE,SECOND,MILLISECOND 等,num 指
定与 dp 相加的值,如果该值为非整数值,将舍弃该值的小数部分,d 为执行加法运
算的日期。
DATEADD 语法格式
dateadd (datepart,numer,date 数据)
numer:用于与 detepart 相加的值。如果指定了非整数值,则将舍弃该值的小数部
分。
date 数据:一个用于解析为 time、date、smalldatetime、datetime、datetime2、
或 datetimeoffset 值的表达式、列表达式、用户定义的变量或字符串文字。
datepart:时间部分
SELECT DATEADD(YEAR,2,GETDATE())
-- 2025-10-24 23:17:52.550 (年份往后增加 2 年)
SELECT DATEADD(MONTH,2,GETDATE())
-- 2023-12-24 23:17:52.550 (月份往后增加 2 个月)
SELECT DATEADD(DAY,2,GETDATE())
-- 2023-10-26 23:17:52.550 (日期往后增加 2 天)
SELECT DATEADD(YEAR,-2,GETDATE())
-- 2021-10-24 23:37:09.477 (年份往前减少 2 年)
SELECT DATEADD(MONTH,-2,GETDATE())
-- 2023-08-24 23:37:09.477 (月份往前减少 2 个月)
SELECT DATEADD(DAY,-2,GETDATE())
-- 2023-10-22 23:37:09.477 (日期往前减少 2 天)
DATEDIFF(dp,stardate,enddate)
datediff 函数将两个特定的日期数据相减,得到的结果可以按照 detepart 指定的格式返回特定的数据。
DATEDIFF语法格式
datediff(datepart,startdate,enddate)
执行中将使用 enddate 减以 startdate 的值,如果 startdate 晚于 enddate 将返回负值。执行结果如果超出整数范围将提示错误。
SELECT DATEDIFF(YEAR,'2022-12-19','2023-10-24')
-- 1
SELECT DATEDIFF(YEAR,'2024-11-19','2023-10-24')
-- -1
SELECT DATEDIFF(MONTH,'2022-2-14','2023-10-24')
-- 20
SELECT DATEDIFF(MONTH,'2023-12-24','2023-10-24')
-- -2