sql >> データベース >  >> RDS >> Mysql

現在の日付と時刻に最も近い結果を表示する(MySQLとPHP)

    私は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よりも論理的であることが常にわかっています。



    1. PostgreSQLはテーブル(フラグメント)の透過的な圧縮をサポートしていますか?

    2. PHP/HTMLフォームがMySQLを更新しない

    3. MySQLでインデックスのサイズを把握する方法

    4. 複数の値に一致するOracleの行の削除