mysql:12505
From: Shinya Kawaji <Shinya Kawaji <kawaji@xxxxxxxxxx>>
Date: Wed, 23 Nov 2005 08:45:27 +0900
Subject: [mysql 12505] Re: SELECT文で日付を比較
かわじ、です。 > SELECT分でTIMESTAMP型のフィールドを利用して、 > その日付以上もデータを参照したいのですが、良い方法ありますでしょうか? > > closeDateのフィールドに20051115000000のデータが入っており、 > 現在の日付を過ぎたら、表示しないのが理想です。 えっと、つまり、TIMESTAMP型のフィールドを日付とみなして(キャストして)、 今日の日付と比較したい、ということでしょうか。 MySQL では、DATE型と TIMESTAMP型の比較の場合、DATE型の時刻部分を 00:00:00 と見做すので、 -- 日付を跨る 3つの時刻 mysql> select * from test_table order by closeDate; +----------------+ | closeDate | +----------------+ | 20051122235959 | | 20051123000000 | | 20051123000001 | +----------------+ 3 rows in set (0.00 sec) -- 今日の日付 mysql> select CURRENT_DATE; +--------------+ | CURRENT_DATE | +--------------+ | 2005-11-23 | +--------------+ 1 row in set (0.00 sec) -- 今日よりも前 mysql> select * from test_table where closeDate < CURRENT_DATE; +----------------+ | closeDate | +----------------+ | 20051122235959 | +----------------+ 1 row in set (0.00 sec) -- 今日と同じ(00:00:00ちょうど) mysql> select * from test_table where closeDate = CURRENT_DATE; +----------------+ | closeDate | +----------------+ | 20051123000000 | +----------------+ 1 row in set (0.00 sec) -- 今日以降 mysql> select * from test_table where closeDate > CURRENT_DATE; +----------------+ | closeDate | +----------------+ | 20051123000001 | +----------------+ 1 row in set (0.00 sec) と、普通に比較して大丈夫と思います。
12457 2005-11-15 11:23 ["Tsuyoshi Oshima" <t] SELECT文で日付を比較 -> 12505 2005-11-23 08:45 ┗[Shinya Kawaji <kawaj]