SQL Server DATEDIFF() 函数
SQL Server DATEDIFF() 函数返回两个日期之间的天数
DATEDIFF(datepart,startdate,enddate)
如果 endate 小于 startdate 那么返回一个负数,否则返回正数或者 0
需要注意的是,返回的天数不包含 startdate 但包含 enddate
参数说明
| 参数 | 说明 |
|---|---|
| datepart | 返回结果中指定格式出现的次数 |
| startdate | 要比较的开始时间,必须是合法的日期表达式 |
| enddate | 要比较的结束时间,必须是合法的日期表达式 |
datepart 参数可以是下列的值
| 值 | 说明 |
|---|---|
| yy, yyyy | 年 |
| qq, q | 季度 |
| mm, m | 月 |
| dy, y | 年中的日 |
| dd, d | 日 |
| wk, ww | 周 |
| dw, w | 星期 |
| hh | 小时 |
| mi, n | 分钟 |
| ss, s | 秒 |
| ms | 毫秒 |
| mcs | 微妙 |
| ns | 纳秒 |
datepart 要怎么理解?
-
当
datepart=day时,DATEDIFF返回两个指定的时间之间(包括第二个日期但不包括第一个日期)的午夜数 -
当
datepart=month时,DATEDIFF返回两个日期之间(包括第二个日期但不包括第一个日期)出现的月的第一天的数目 -
当
datepart=week时,DATEDIFF返回两个日期(包括第二个日期但不包括第一个日期)之间星期日的数目
范例
假设我们要返回 2017-06-05 到 2017-08-05 之间的天数,可以使用下面的 SQL 语句
SELECT DATEDIFF(day, '2007-06-05','2007-08-05') AS days;
运行结果如下
| days |
|---|
| 61 |
如果我们把开始时间和结束时间交换一下,那么返回的将会是负值
SELECT DATEDIFF(day, '2007-08-05','2007-06-05') AS days;
运行结果如下
| days |
|---|
| -61 |