这些标量函数对日期和时间输入值执行操作,并返回一个字符串、数字值或日期和时间值。
下表列出日期和时间函数以及它们的确定性属性。有关函数确定性的更多信息,请参见确定性函数和非确定性函数。
函数 | 确定性 |
---|---|
DATEADD | 具有确定性 |
DATEDIFF | 具有确定性 |
DATENAME | 不具有确定性 |
DATEPART | 除了用作 DATEPART (dw, date) 外都具有确定性。dw 是工作日的日期部分,取决于由设置每周第一天的 SET DATEFIRST 所设置的值。 |
DAY | 具有确定性 |
GETDATE | 不具有确定性 |
GETUTCDATE | 不具有确定性 |
MONTH | 具有确定性 |
YEAR | 具有确定性 |
1. dateadd
在向指定日期加上一段时间的基础上,返回新的 datetime 值。
DATEADD ( datepart , number, date )
datepart
是规定应向日期的哪一部分返回新值的参数。下表列出了 Microsoft® SQL Server™ 识别的日期部分和缩写。
日期部分 | 缩写 |
---|---|
Year | yy, yyyy |
quarter | qq, q |
Month | mm, m |
dayofyear | dy, y |
Day | dd, d |
Week | wk, ww |
Hour | hh |
minute | mi, n |
second | ss, s |
millisecond | ms |
--示例
在'2004-09-18'的基础上加1天
select dateadd(day,1,'2004-09-18')
--返回:2004-09-19 00:00:00.000
2.datediff
返回跨两个指定日期的日期和时间边界数。
DATEDIFF ( datepart , startdate , enddate )
datepart
是规定了应在日期的哪一部分计算差额的参数。下表列出了 Microsoft® SQL Server™ 识别的日期部分和缩写。
日期部分 | 缩写 |
---|---|
year | yy, yyyy |
quarter | qq, q |
Month | mm, m |
dayofyear | dy, y |
Day | dd, d |
Week | wk, ww |
Hour | hh |
minute | mi, n |
second | ss, s |
millisecond | ms |
--示例
'2004-09-01'跟'2004-09-18'相差几天?
select datediff(day,'2004-09-01','2004-09-18')
--返回 17
3.datename
返回代表指定日期的指定日期部分的字符串。
DATENAME ( datepart , date )
datepart
是指定应返回的日期部分的参数。下表列出了 Microsoft® SQL Server™ 识别的日期部分和缩写。
日期部分 | 缩写 |
---|---|
year | yy, yyyy |
quarter | qq, q |
month | mm, m |
dayofyear | dy, y |
day | dd, d |
week | wk, ww |
weekday | dw |
Hour | hh |
minute | mi, n |
second | ss, s |
millisecond | ms |
--示例
求'2004-09-19'是星期几?
select datename(dw,'2004-09-19') --返回 '星期日'
如果要求是英文的则:
set language english --设置语言
select datename(dw,'2004-09-19') --返回:Sunday
set language 简体中文 --将语言再设回去
4. datepart
返回代表指定日期的指定日期部分的整数。
DATEPART ( datepart , date )
datepart
是指定应返回的日期部分的参数。下表列出了 Microsoft® SQL Server™ 识别的日期部分和缩写。
日期部分 | 缩写 |
---|---|
year | yy, yyyy |
quarter | qq, q |
month | mm, m |
dayofyear | dy, y |
day | dd, d |
week | wk, ww |
weekday | dw |
Hour | hh |
minute | mi, n |
second | ss, s |
millisecond | ms |
此示例假设日期是 5 月 29 日。
SELECT DATEPART(month, GETDATE())GO
下面是结果集:
----------- 5 (1 row(s) affected)
5.day
返回代表指定日期的天的日期部分的整数。
语法
DAY ( date )
6.getdate
按 datetime 值的 Microsoft® SQL Server™ 标准内部格式返回当前系统日期和时间。
语法
GETDATE ( )
7 GETUTCDATE
返回表示当前 UTC 时间(世界时间坐标或格林尼治标准时间)的 datetime 值。当前的 UTC 时间得自当前的本地时间和运行 SQL Server 的计算机操作系统中的时区设置。
语法
GETUTCDATE()
8.month() 与year()
分别取月,年的整数部分
注意:灵活使用日期时间函数,用时多考虑!