mysql和sql時間 欄位比較大小的問題
不能用兩個字串比較的小的方法來做。例如:‘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. 因此必須用
對於 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')