2009-06-29 21 views
30

の比較、私はすべての結果from tbl where date1 > date2MySQLの私は、時間との二つの日付を比較したい2つの日時フィールド

Select * From temp where mydate > '2009-06-29 04:00:44'; 

たいが、それはただの日付ではない時間を比較しています。今日の結果セットをすべて私に提供しています

'2009-06-29 11:08:57' 
'2009-06-29 11:14:35' 
'2009-06-29 11:12:38' 
'2009-06-29 11:37:48' 
'2009-06-29 11:52:17' 
'2009-06-29 12:12:50' 
'2009-06-29 12:13:38' 
'2009-06-29 12:19:24' 
'2009-06-29 12:27:25' 
'2009-06-29 12:28:49' 
'2009-06-29 12:35:54' 
'2009-06-29 12:36:54' 
'2009-06-29 12:49:57' 
'2009-06-29 12:58:04' 
'2009-06-29 04:13:20' 
'2009-06-29 04:56:19' 
'2009-06-29 05:00:23' 
'2009-06-29 05:04:26' 
'2009-06-29 05:08:17' 
'2009-06-29 05:26:57' 
'2009-06-29 05:29:06' 
'2009-06-29 05:32:11' 
'2009-06-29 05:52:07' 

ありがとうございます!

+13

「2009年6月29日04:00:44」未満の結果はありません;あなたのコードが動作しているようですか、何か不足していますか? –

+0

これらの日付を出力前にしたい '2009-06-29 04:56:19' '2009-06-29 05:00:23' '2009-06-29 05:04:26' '2009-06-29 05:08:17' '2009-06-29 05:26:57' '2009-06-29 05:29:06' '2009-06-29 05:32:11 ' ' 2009-06-29 05:52:07 ' –

+1

ええと...あなたはその前から見えるものはありません。 「2009年6月29日11時08分57秒」が「2009年6月29日04時0分44秒」の前に来ると言っているようです。 4AMは午前11時より前に来るので、午前11時は午前4時よりも大きくなっています。もう一度、私は何かを逃している? –

答えて

53

あなたは一例として示したいクエリは次のとおりです。

SELECT * FROM temp WHERE mydate > '2009-06-29 16:00:44'; 

午前4時00分○○秒は4AMですので、あなたが表示されているすべての結果が正しいか、後に来ます。

4PMの後にすべてを表示する場合は、クエリで正しい(24時間)表記を使用する必要があります。あなたの日付、およびその12時間の時間を示すこと

SELECT mydate, DATE_FORMAT(mydate, '%r') FROM temp; 

物事が少し明確にするために、これを試してみてください。

3

あなたのクエリは、時間を考慮しても、すべての正しい日付を返したようです。

まだ結果に満足できない場合は、DATEDIFFにショットを与え、2つの日付の間に否定的/肯定的な結果がないかどうかを探します。

mydate列がdatetimeタイプであることを確認してください。

3

注文しますか?

Select * From temp where mydate > '2009-06-29 04:00:44' ORDER BY mydate; 
+0

いいえ私は 'datetime after after' 2009-06-29 04:00:44 ' –

+0

それはあなたが持っているものです。 – alexn

+0

いいえ私はすべての結果セットを取得していますが、今日は私が指定したdatetimeの後ではありません。 - 私が与えた時刻は4PMで、11AMレコードを取得しています。 –

9

は、日付と時刻の両方を比較するために、次のSQLを使用することができます -

Select * From temp where mydate > STR_TO_DATE('2009-06-29 04:00:44', '%Y-%m-%d %H:%i:%s'); 
私はあなたがproblem-

で述べたテーブルとフィールドの同じ種類で同じSQLを使用

添付mysqlの出力enter image description here

完璧に動作するはずです。

+0

ブリリアント。 MySQLは日付の代わりに文字列を比較しています! これからはこれを念頭に置いておきます。 偉大な答え、upvoted! –

+0

STR_TO_DATE、ありがとうございました! – mircea

関連する問題