2009-03-27 7 views
0

これはかなりシンプルに思えますが、頭痛を与えています。私は 'date_time'と呼ばれるイベントテーブルの列を持っており、その型はdatetimeです。MySQLデータベースから日時フィールドのみのレコードを取得する必要があります

日ごとにイベントを取得するクエリを作成する必要があります。テーブル

============================ 
| id |  date_time  | 
============================ 
| 5 | 2009-03-27 14:16:00 | 
============================ 

例今、私は私だけで動作するように日付(UNIXタイムスタンプ)を持っている以外、ID = 5でイベントを取得する必要があります。私はmysql形式に変換し、2009-03-27 00:00:00と2009-03-28 00:00:00の間で選択するなど、多くのことを試しましたが、動作させることができませんでした。

これを行うにはどのような方法が最適ですか?

ありがとうございます。

+0

あなたはansi sqlを使用していますか? – MedicineMan

答えて

8
SELECT * FROM table 
WHERE date_time BETWEEN '2009-03-27 00:00:00' AND '2009-03-27 23:59:59' 

する必要があります。 DATE()機能は、日時列の日付部分を抽出

SELECT * FROM table WHERE DATE(date_time) = '2009-03-27' 

また、これを試してみてください。タイムスタンプは秒の小数が含まれる場合

+0

DATE()関数のアプローチはおそらくテーブルスキャンを強制します。 – derobert

+0

私はあなたの2番目の例を選びました。ありがとう:) – alex

0
select * from table WHERE date(date_time) = '2009-03-27' works for me 

あなたがUnixタイムスタンプを持っている場合は、またBETWEEN

select * from table WHERE UNIX_TIMESTAMP(date_time) = your_timestamp 
+0

あなたのUNIX_TIMEESTAMPのアプローチは、UNIX_TIMESTAMPが2番目のものになるため、動作しません。 – derobert

0

を行うことは安全ではありません。これは常に安全です:

SELECT * 
FROM table 
WHERE date_time >= '2009-03-26 00:00:00' AND date_time < '2009-03-27 00:00:00' 
関連する問題