[前][次][番号順一覧][スレッド一覧]

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]