不能用兩個字串比較的小的方法來做。例如:‘2010-10-20’ > ‘2010-12-15’
正解:都是 , 後面的時間- 前面的時間
mysql
select count(*) from table where timestampdiff(hour,'2008-08-08 12:00:00','2008-08-08 00:00:00') > 0
server sql
select count(*) from table where DATEDIFF
([second], '2004-09-18 00:00:18', '2004-09-18 00:00:19')
> 0
1.
因此必須用
sql
的時間函數和字串轉化進行比較。
對於
mysql
:
(1)
如果資料庫表中的欄位是日期
格式的
select name,cdate
from user where
DATEDIFF('2010-1-10' , sysdate()) > 0
也可以用(這裡會自動的將字串轉化成日期格式然後想減,返回天數,前減後
,小於
0
說明前面的日期小):
select name,cdate
from user where
DATEDIFF('2010-1-10' ,'2010-1-11') ;
可以不用日期和字串函數的轉化就可以了。
msql
的轉換函式:
CAST('2010-10-10' AS DATE)
BINARY,CHAR,DATE,TIME,DATETIME,SIGNED,UNSIGNED
樣本:
SELECT CAST(NOW() AS SIGNED INTEGER),CURDATE()+0;
SELECT 'f'=BINARY 'F','f'=CAST('F' AS BINARY);
mysql
返回兩個時間的秒的格式為
:
select
DATEDIFF('2010-1-10' ,'2010-1-11');
select unix_timestamp('2008-1-1 11:20:50') - unix_timestamp('2008-1-1 12:10:20');
select timestampdiff(hour,'2008-08-08 12:00:00','2008-08-08 00:00:00');
select timestampdiff(second,'2008-08-01','2008-08-08');
(2)
如果資料庫表中的欄位是字元
格式的
如果上面的可以自動的轉換的話我們就沒有必要談
是字元格式設定的問題了。
對於
SQL
:
server sql
相對來說就比較寬泛一些了可以得到相差的時間精確到秒了。
(
無所謂字元
還是時間格式了
)
SELECT DATEDIFF([year], GETDATE(), '2004-09-18')
傳回值:
-6
,說明是後減前
與
mysql
相反的。
select datediff(day,getdate(),'2004-09-18')
SELECT DATEDIFF([hour], '2004-09-01', '2004-09-18')
SELECT DATEDIFF([second], '2004-09-18 00:00:18', '2004-09-18 00:00:19')