mysql で特定の記録日を指定して、テーブルから行を選択したい
SELECT * from TABLENAME WHERE FROM_DATE='06/11/2012'
私は何も役に立ちません。
まず第一に、標準の日付形式を使用する必要があります。Y-m-d
そうしないと、厄介なクエリを作成する必要があり、並べ替えは本当に面倒です。
標準の日付形式を使用すると、次のようなことが簡単にできます。
SELECT * FROM tablename WHERE from_date > '2012-06-11'
DATE
比較は、ここで必要なものである可能性が非常に高いです。from_date 列のデータ型が のDATE
場合、これを行うと、コードは安全で堅牢になります。
WHERE from_date = STR_TO_DATE('06/11/2012', '%m/%d/%Y')
@Repox は、日付リテラルを標準形式 '2012-06-11' にすることを検討してもよいと指摘しました。それができるなら、それは本当です。ただし、必要に応じて STR_TO_DATE が代わりに行います。ここに %x 変換アイテムのリストがあります。http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format
データ型を使用している場合はDATETIME
、注意してください: 比較は見た目よりも複雑です。 DATETIME
項目は浮動小数点数のようなものです: それらの 1 つが別のものと正確に等しい場合、それは単なる偶然です。これは、日だけでなく、瞬間 (ミリ秒) を表すためです。
from_date 列にDATETIME
タイプがあると仮定すると、使用する必要があります
WHERE from_date >= STR_TO_DATE('06/11/2012', '%m/%d/%Y')
AND from_date < STR_TO_DATE('06/11/2012', '%m/%d/%Y') + INTERVAL 1 DAY
これにより、翌日の最初の瞬間までの、必要な日のすべての瞬間が捉えられます。
from_date 項目が文字列として表現されている場合は、わざわざデータ型に変換してDATE
ください。DATETIME
真剣に。あなたの結果ははるかに良くなります。
SELECT * from TABLENAME WHERE FROM_DATE='2012/06/13'
DATE()
mysqlの機能を使えばもっといい
SELECT * FROM tablename WHERE DATE(from_date) > '2012-06-11'
from_date のデータ型が TIMESTAMP または DATETIME として設定されている場合、「>」記号を直接使用すると、正しい結果が返されないことがあります。