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
week (wk, ww) 日期部分反映对 SET DATEFIRST 作的更改。任何一年的 1 月 1 日定义了 week 日期部分的开始数字,例如:DATEPART(wk, 'Jan 1, xxxx') = 1,此处 xxxx 代表任一年。
weekday (dw) 日期部分返回对应于星期中的某天的数,例如:Sunday = 1、Saturday = 7。weekday 日期部分产生的数取决于 SET DATEFIRST 设定的值,此命令设定星期中的第一天。
如果你需要的是今天是这个星期第几天,就用
select datepart(weekday,getdate()) (1,表示星期天,2 表示星期一 .... 7表示星期六)
如果你要显示星期几,就用
select datename(weekday,getdate())
date
是返回 datetime 或 smalldatetime 值或日期格式字符串的表达式。对 1753 年 1 月 1 日之后的日期用datetime 数据类型。更早的日期存储为字符数据。当输入 datetime 值时,始终将其放入引号中。因为 smalldatetime 只精确到分钟,所以当用 smalldatetime 值时,秒和毫秒总是 0。
如果只指定年份的最后两位数字,则小于或等于"两位数年份截止期"配置选项的值的最后两位数字的数字所在世纪与截止年所在世纪相同。大于该选项的值的最后两位数字的数字所在世纪为截止年所在世纪的前一个世纪。例如,如果 two digit year cutoff 为 2049 (默认),则 49 被解释为 2049,2050 被解释为 1950。为避免模糊,请使用四位数的年份。
有关时间值指定的更多信息,请参见时间格式。有关日期指定的更多信息,请参见 datetime 和 smalldatetime。
返回类型
int
注释
DAY、MONTH、和 YEAR 函数分别是 DATEPART(dd, date)、DATEPART(mm, date)、和 DATEPART(yy, date) 的同义词。
示例
GETDATE 函数返回当前日期;然而,比较时并不总是需要完整的日期信息(通常只是对日期的一部分进行比较)。此示例显示 GETDATE 及 DATEPART 的输出。
SELECT GETDATE() AS 'Current Date'
GO
下面是结果集:
Current Date
---------------------------
Feb 18 1998 11:46PM
SELECT DATEPART(month, GETDATE()) AS 'Month Number'
GO
下面是结果集:
Month Number
------------
2
此示例假设日期是 5 月 29 日。
SELECT DATEPART(month, GETDATE())
GO
下面是结果集:
-----------
5
(1 row(s) affected)
在此示例中,以数字表示日期。注意:SQL Server 将 0 解释为 01/01/1900。
SELECT DATEPART(m, 0), DATEPART(d, 0), DATEPART(yy, 0)
下面是结果集:
----- ------ ------
1 1 1900
DATEDIFF 函数 [日期和时间]
功能
返回两个日期之间的间隔。
语法
DATEDIFF ( date-part, date-expr
date-part :
year | quarter | month | week | day | hour | minute | second | millisecond
参数
date-part 指定要测量其间隔的日期部分。
有关日期部分的详细信息,请参见日期部分。
date-expr
date-expr
用法
此函数计算两个指定日期之间日期部分的数目。结果为日期部分中等于(date2 - date1)的有符号的整数值。
当结果不是日期部分的偶数倍时,DATEDIFF 将被截断而不是被舍入。
当使用 day 作为日期部分时,DATEDIFF 返回两个指定的时间之间(包括第二个日期但不包括第一个日期)的午夜数。
当使用 month 作为日期部分时,DATEDIFF 返回两个日期之间(包括第二个日期但不包括第一个日期)出现的月的第一天的数目。
当使用 week 作为日期部分时,DATEDIFF 返回两个日期(包括第二个日期但不包括第一个日期)之间星期日的数目。
对于更小的时间单位存在溢出值:
milliseconds 24 天
seconds 68 年
minutes 4083 年
others 没有溢出限制
如果超出这些限制,此函数将返回溢出错误。
标准和兼容性
SQL/92 Transact-SQL 扩展。
SQL/99 Transact-SQL 扩展。
Sybase 与 Adaptive Server Enterprise 兼容。
下面示例的语句返回 1:
SELECT datediff( hour, '4:00AM', '5:50AM' )下面的语句返回 102:
SELECT datediff( month, '1987/05/02', '1995/11/15' )下面的语句返回 0:
SELECT datediff( day, '00:00', '23:59' )下面的语句返回 4:
SELECT datediff( day,
'1999/07/19 00:00',
'1999/07/23 23:59' )下面的语句返回 0:
SELECT datediff( month, '1999/07/19', '1999/07/23' )下面的语句返回 1:
SELECT datediff( month, '1999/07/19', '1999/08/23' )