首先可耻的贴出一段官方看法
http://www.w3school.com.cn/sql/func_datediff.asp
定义和用法
DATEDIFF() 函数返回两个日期之间的天数。
语法
DATEDIFF(datepart,startdate,enddate)
startdate 和 enddate 参数是合法的日期表达式。
datepart 参数可以是下列的值:
datepart | 缩写 |
---|---|
年 | yy, yyyy |
季度 | qq, q |
月 | mm, m |
年中的日 | dy, y |
日 | dd, d |
周 | wk, ww |
星期 | dw, w |
小时 | hh |
分钟 | mi, n |
秒 | ss, s |
毫秒 | ms |
微妙 | mcs |
纳秒 | ns |
实例
例子 1
使用如下 SELECT 语句:
SELECT DATEDIFF(day,'2008-12-29','2008-12-30') AS DiffDate
结果:
DiffDate |
---|
1 |
例子 2
使用如下 SELECT 语句:
SELECT DATEDIFF(day,'2008-12-30','2008-12-29') AS DiffDate
结果:
DiffDate |
---|
-1 |
上面一段是著名的网页学习网站w3school中有关datediff()方法的描述。但此中却少了一个重要的信息:那就是最大值
使用datediff方法会得到一个long类型的数字,但这个数字对毫秒和秒得出的最大值是有限制的。对于毫秒最大数是24天20小时31分零23.647秒。
对于秒最大数是68年。
如果超过最大值的话,会有如下错误信息显示:Difference of two datetime fields caused overflow at runtime.
之所以标红是因为不遇到一次很难会想到这点,建议尽量用秒就好。