重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

PHP5+MySQLで現在日時とDB内の開始日時と終了日時との比較の方法を教えてください。

table_a
id start end
----+--------------------+---------------------+
001 2010-01-01 10:00:00 2010-01-03 18:30:00
002 2010-01-01 12:00:00 2010-01-05 20:00:00



というデータがある時、
現在の日時がid:001のstartとendの間だったら1、
start前だったら0、endより後だったら2の値を表示させるにはどうしたらいいのでしょうか?

$sql = "SELECT
A.id
,A.start
,A.end
FROM
table_a A
WHERE A.id = ".$id."
";
$result = mysql_query($sql);
で取得して
time()などと比較すればいいとは思ってますが、DBから持ってきた日付との比較方法がわかりません。

A 回答 (2件)

SQLで取得するときに判定するとか




SELECT *,
case
when current_date()<start then 0
when current_date()>end then 2
else 1
end now
FROM `table1`
    • good
    • 0
この回答へのお礼

回答ありがとございました。
bin_goさんのほうが早く回答していただいたのでベストアンサーとします。
どちらも勉強になりました。ありがとうございました。

お礼日時:2010/10/05 15:20

SELECT `id`,`start`,`end`


,CASE WHEN NOW() BETWEEN `start` and `end` THEN 1
WHEN NOW() <`start` THEN 0 ELSE 2 END AS FLG
FROM
table_a

endなどの予約語は使わない方がいいです。
つかうならバックスラッシュでくくる。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
こちらでもやりたいことが出来ました。
endは予約語だったんですね。サンプルで書いたためstart,endとしてしまいました。

お礼日時:2010/10/05 15:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!