首先可恥的貼出一段官方看法
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.
之所以標紅是因為不遇到一次很難會想到這點,建議盡量用秒就好。