0

現在の時刻がDB内の特定の範囲のフィールド内にあるかどうかを確認する必要があります。

たとえば、DBには、、、、、およびをstart time格納しend timeます。start dateend date

次に、現在の日付がクエリによって返される値の範囲内にあるかどうかを確認する必要があります。

私は試みました:

WHERE start_date <= $currdate 
  AND end_date >= $currdate
  AND start_time <= $currtime
  AND end_time >= $currtime

これは、日付が2日間重複する状況が発生するまではうまく機能します。この場合、クエリは現在の時刻よりも明らかに少ないとして返さNULLれます。end_time

start_datestart_timeを組み合わせる方法が必要だend_dateと思いend_timeますか?

4

1 に答える 1

2

タイムスタンプ()を試しましたか?

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_timestamp

おそらく次のようなことができます

WHERE timestamp(start_date, start_time) <= timestamp(currdate, currtime)
  AND timestamp(end_date, end_time) >= timestamp(currdate, currtime)

もちろん、これは開始日/終了日と時間が関連していることを前提としています。これら2つのフィールドを分離するビジネスロジックの背後にあるものは完全にはわかりません...

于 2012-09-21T23:18:20.537 に答える