SQL中提供了4种处理datetime类型值的函数给我们,可以实现一些效果。
1:datefill(datepart,startdate,enddate)
这个函数的作用是返回enddate与startdate之间指定的datepart的差,如输入值是datefill(dd, '2012-09-07' , '1990-09-07')的返回值就是0,因为他datepart是dd,就是相 比较的是日,都是07,所以返回值是0。如果enddate是'1990-09-08'则返回值是1。这个函数可以查找到多少天或者多少个月之内的资料,如查找3个月之内的资料,查询条件添 加datefill(mm,creattime,getdate())<=3就可以查询3个月之内的数据了。
其中datepart就是选择2个日期比较的部分。格式如下:
然后startdate就是开始的时间,该部分的datepart会作为减数。enddate的datepart会作为被减数,两数之差就是返回值。
2:dateadd(datepart,number, date)
这个函数的作用是返回比date所选的datepart加上number后的时间,如输入值是dateadd(dd,8, '1990-09-07'),那么他的返回值就是'1990-09-15',输入值是dateadd(mm,8, '1990-02-07'),那么他的返回值就是'1990-10-07'。
此函数datepart的参数和上面一样,就不多说了。number就是date的所选的datepart的加数,date所选的datepart作为被加数,如datepart为mm,就是date的月部分加上number个月,就算超出12,也会年份增加1年,月份重新计算的。
3:datename(datepart, date)
这个函数是提取date的datepart值出来,返回值是一个字符串,可以根据星期,年份等查询,如DATENAME(dw,'2012-09-03')的返回值就是‘星期一’这一个字符串,用这个函 数就可以根据一些例如是星期几、第几个星期这样特殊的查询条件来查询日期了。
这个的datepart也是和上面一样,就不多说了。然后date就是要查询的日期,也没什么要说明的了。
3:datepart(datepart, date)
这个函数也是可以提取date的datepart值出来,但是返回的是一个整型值,如DATEPART(dw,'2012-09-03')会返回2,虽然天是星期一,但是它计算一周天数是从周日作为第一天 开始的,所以返回的是2,功能和datename的差不多,就是返回的是整型而不是字符串。