提到SQL中的日期函数与时间函数就不得不说出以下两个概念:确定性函数与非确定性函数。
确定性函数:即获得的值是在一组既定的值中,或者是可以料想到的值。 非确定性函数:即无法准确获知其结果。
下面将日期函数与时间函数按上面提到的这两种类型进行分类说明:
1. 确定性函数: [1] DateAdd() 作用:在指定的日期加上一段时间的基础上,返回新的DateTime
语法: DateAdd(datepart,number,date)
参数: datepart
是规定应向日期的哪一部分返回新值的参数。下表列出了 Microsoft® SQL Server™ 识别的日期部分和缩写。


number
是用来增加datepart的值,如果指定的不是一个整数,则将舍弃此值的小数部分。 例如,如果为datepart指定day,为number指定1.75,则day将增加1。
date 是返回DateTime类型或SmallDateTime值或日期格式字符串的表达式。
返回值类型: 返回DateTime,如果date参数是SmallDateTime,返回SmallDateTime。
示例: 此示例打印出当前时间加上21天, DateAdd(day,21,GetDate()) number传负数,大于本月剩余天数的值都是可以的,函数会自己演算。
[2] DateDiff() 作用: 返回跨两个指定日期的日期和时间边界数。
语法: DateDiff(datepart,startDate,endDate)
参数: datepart DateAdd()中以对此参数进行了介绍,这里不再赘述,后面的datepart参数也同。
startDate 是计算的开始日期,startDate是返回DateTime或SmallDateTime值或日期格式字符串的表达式。 因为SmallDateTime只精确到分钟,所以当用SmallDateTime时,秒和毫秒总是0。
endDate 是计算的总是日期。endDate是返回DateTime或SmallDateTime值或日期格式字符串的表达式。
返回值类型: int
解释: startDate是从endDate减去。如果startDate比endDate玩,返回负值。 当超出整数值范围,DateDiff产生错误。 对于毫秒,最大数是24天20小时31分钟零23.647秒。 对于秒,最大数是68年。 计算跨分钟、秒和毫秒这些边界的方法,使得DateDiff给出的结果在全部数据类型中是一致的。 结果是带正负号的整数值,其等于跨第一个和第二个日期间的datepart边界值。 例如,在1月4日(星期日)和1月11日(星期日)之间的星期数是1。
示例: select DateDiff(day,'2009-10-24',GetDate())
[3] Day() 作用: 返回代表指定日期的天的日期部分整数。
语法: Day(date)
参数: date 类型为DateTime或SmallDateTime的表达式。
返回值类型: int
解释: 此函数等价于DatePart(dd,date)
示例: 下面的示例从2009-10-4中返回day部分 select Day('2009-10-4') 会得到4,即日期部分
[4] Month() 作用: 返回代表指定日期月份的整数。
语法: Month(date)
参数: date 返回DateTime或SmallDateTime值或日期格式字符串的表达式。
返回值类型: int
解释: 此函数等价于等价于DatePart(mm,date)
示例: 下面的示例从2009-10-4中返回month部分 select Month('2009-10-4') 会获得10,即月份部分
[5] Year() 作用: 返回表示指定日期中的年份的整数。
语法: Year(date)
参数: date DateTime或SmallDateTime类型的表达式。
返回值类型: int
解释: 此函数等价于DatePart(yy,date)
示例: 下例从日期2009-10-4中返回年分数 select Year('2009-10-4') 获得2009,即年份部分
2. 非确定性函数: [1] DateName() 作用: 返回代表指定日期的制定日期部分的字符串。
语法: DateName(datepart,date)
参数: datepart 同DateAdd()
返回值类型: nvarchar
解释: SQL Server自动在字符和DateTime值间按需求进行交换,例如,当字符与DateTime值进行比较时。
示例: 此示例从GetDate返回的日期中提取月份名, select DateName(month,GetDate()) 获得October
[2] GetDate() 作用: 按DateTime值的 Microsoft® SQL Server™ 标准内部格式返回当前系统日期和时间。
语法: GetDate()
返回值类型: DateTime
解释: 日期函数可以用在select语句的选择列表或用在查询的where子句中, 在设计报表时,GetDate函数可用于在每次生成报表时打印当前日期和时间。 GetDate对于跟踪活动也很有用,诸如在记录事务在某一账户上发生的时间。
示例: A. 用GetDate返回当前日期和日期和时间 下面的示例得出当前系统日期和时间: select GetDate()
B. 在create table语句中使用GetDate 下面的示例创建Employees表并用GetDate给出员工雇佣时间的默认值。 use Test go
create table Employees ( id int identity(1,1), empName varchar(40) not null, createDtm DateTime default GetDate() ) go
[3] GetUtcDate() 作用: 返回表示当前UTC时间(世界时间坐标或称格林威治标准时间)的DateTime值。 当前的UTC时间得自当前的本地时间和运行SQL Server的计算机操作系统中的设置。
语法: GetUtcDate()
返回值类型: DateTime
解释: GetUtcDate是非确定性函数。引用该列的视图和表达式无法进行索引。 GetUtcDate无法在用户定义的函数内使用。
最后的这个比较特别,它是DatePart() 除了用作DatePart(dw,date)外都具有确定性。 dw是工作日的日期部分。
作用: 返回代表指定日期的指定日期部分的函数。
语法: DatePart(datepart,date)
参数: datepart 这里多了个weekday(dw),返回对应于星期中某天的数, 例如,Sunday = 1,Saturday = 7。 weekday日期部分产生的数取决于set datefirst设定的值,此命令设定星期中的第一天。
date 是返回DateTime或SmallDateTime值或日期格式字符串的表达式。
返回值类型: int
解释: Day、Month和Year函数分别等价于DatePart(dd,date)、DatePart(mm,date)和DatePart(yy,date)
示例: GetDate函数返回当前日期,然而,比较时并不总是需要完整的日期信息,通常只是对日期的一部分进行比较。 select DatePart(mm,GetDate()) as 'Month Num' go 获得10 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|