不能用兩個字串比較的小的方法來做。例如:『2010-10-20』> 『2010-12-15』
正解:都是, 後面的時間- 前面的時間
mysql
select count(*) from table wheretimestampdiff(hour,'2008-08-08 12:00:00','2008-08-08 00:00:00') > 0
server sql
select count(*) from table wheredatediff([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')
SQL比較兩表字段和字段型別
業務需要把tb delete kysubproject表資料恢復到tb kysubproject,但提示錯誤,錯誤原因是兩表字段型別存在不一致 insert into tb kysubproject select from tb delete kysubproject where tb delete...
mysql時間字段 MySQL日期時間字段
mysql支援的日期時間型別有 datetime timestamp date time year。幾種型別比較如下 datetime 用於表示 年月日 時分秒,是 date和time 的組合,並且記錄的年份 見上表 比較長久。如果實際應用中有這樣的需求,就可以使用 datetime 型別。time...
Mysql資料庫時間比較SQL和有關時間SQL
查詢當天的所有資料 select from 表名where datediff 字段 now 0select from 表名 where to days 時間欄位名 to days now 查詢昨天的所有資料 select from 表名 where datediff 字段,now 1select f...