web-dev-qa-db-ja.com

Mysqlは2つの日時フィールドを比較します

2つの日付を時間と比較したい、すべての結果が欲しいfrom tbl where date1 > date2

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'

前もって感謝します!

37
MySQL DBA

例として表示するクエリは次のとおりです。

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

04:00:00は午前4時であるため、表示しているすべての結果はafter thatです。これは正しいです。

午後4時以降にすべてを表示する場合は、クエリで正しい(24時間)表記を使用する必要があります。

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

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

日付と12時間の時刻が表示されます。

62
Jeremy Smyth

次のSQLを使用して、日付と時刻の両方を比較できます-

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

問題で言及した同じ種類のテーブルとフィールドで同じSQLを使用した場合のmysql出力の添付

enter image description here

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

12
Anjuman

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

それでも結果に満足できない場合は、DATEDIFFを試して、2つの日付の間に否定的/肯定的な結果を探してください。

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

4
Sampson

注文しますか?

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