私はPHPの日付/時刻メソッドを使用するのをやめ、MySQLが次のようなクエリを提供することに依存します
SELECT * FROM table_name
WHERE date > CURRENT_DATE
OR (
date = CURRENT_DATE
AND
time > CURRENT_TIME
)
ORDER BY date ASC, time ASC LIMIT 1
ORは、正しいレコードを取得することを確認します。そうしないと、TIME部分がブロックされます。つまり、現在の時刻が06:00の場合、翌日の03:00の結果は表示されません。
そこでタイムスタンプ値を使用しているので、CURRENT_DATEの代わりにPHPの日付の数値をいつでも渡すことができます。これにより、
の最終的なスクリプトが得られます。$timestamp_now = strtotime(date('d-m-Y')); //Creates a timestamp of the currect date
$sql = mysql_query('SELECT * FROM table_name
WHERE date > '.$timestamp_now.'
OR (
date = '.$timestamp_now.'
AND
time > CURRENT_TIME
)
ORDER BY date ASC, time ASC LIMIT 1') or die(mysql_error());
$data = mysql_fetch_array($sql);
可能であれば、データベースを変更してMySQL DATETIMEフィールドとして保存することを検討することをお勧めします。そうすれば、このクエリを単にWHERE datetime > NOW()
に変更できます。 、しかしそれは完全にあなた次第です。 MySQLの日付処理はPHPよりも論理的であることが常にわかっています。