2. 日期和时间函数
这里主要讲DATEADD(),DATEDIFF(),DATENAME()和DATEPART()函数。
DATEADD()函数在向指定日期加上一段时间的基础上,返回新的DATETIME值。它的语法如下:
DATEADD(datepart, number, date)
datepart是规定应向日期的哪一部分返回值的参数,number是用来增加datepart值的参数(如果指定的值不是整数,则将废弃该值的小数部分),date是返回DATETIME或SMALLDATETIME值或日期格式字符串的表达式。
例2.1:
Use pubs
go
select dateadd(day, 21, pubdate) AS timeframe
from titles
go
上述代码打印出pubs数据库中标题的时间结构列表。此事件结构表示当前发布日期加上21天。
DATEDIFF()函数返回跨两个指定日期的日期和时间的边界,语法结构如下:
DATEDIFF(datepart, startdate, enddate)
参数datepart用来规定应在哪一部分计算差额,startdate是计算的开始日期,enddate是计算的终止日期。需要注意的是,startdate用enddate去减,如果startdate比enddate晚,则返回负值。当结果超出整数范围时,DATEDIFF()函数将产生错误。
例2.2:
use pubs
go
select datediff(day, pubdate, getdate()) AS no_of_days
from titles
go
上述代码确定在pubs数据库中标题发布日期和当前日期之间的天数。
DATENAME()函数返回代表指定日期的指定日期部分的字符串,语法如下:
DATENAME(datepart, date)
datepart是指定返回的日期部分的参数。
例2.3:
select datename(month, getdate()) AS 'Month Name'
上述代码从getdate()函数返回的日期中提取出月份名称。
DATEPART()函数和DATENAME()函数功能类似,将DATETIME值的指定部分(年,季度,天,小时等)生成为整数值或者ASCII字符串。
例2.4(DATENAME()和DATEPART()对比):
select datepart(month, getdate())
select datename(month, getdate())
上述代码结果分别为"9" 和"09" (9月份实验数据)。