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

PHP日付を空白の日/時間/秒前に変換する

    日付は常にMySQLの日時形式(YYYY-MM-DD)で保存する必要があります。これにより、MySQLの組み込みの日付機能を簡単に利用できます。他の形式で保存すると、それらの値を表示するだけでなく、より多くのことを実行したい場合に、(場合によっては多くの)より多くの作業が必要になります。

    PHPでやりたいことを達成するには、 DateTime() この回答 に基づく ):

    $datetime1 = new DateTime($firstDate);
    $datetime2 = new DateTime($secondDate);
    $interval  = $datetime1->diff($datetime2);
    if ($interval->days <= 7)
    {
        $elapsed   = $interval->format('%y years, %m months, %a days, %h hours, %i minutes, %S seconds');
        $elapsed   = str_replace(array('0 years,', ' 0 months,', ' 0 days,',  ' 0 hours,', ' 0 minutes,'), '', $elapsed);
        $elapsed   = str_replace(array('1 years, ', ' 1 months, ', ' 1 days, ',  ' 1 hours, ', ' 1 minutes'), array('1 year, ', '1 month, ', ' 1 day, ', ' 1 hour, ', ' 1 minute'), $elapsed);
        echo $elapsed;
    }
    else 
    {
        echo $firstDate;
    }
    
    $datetime1 = new DateTime($firstDate);
    $datetime2 = new DateTime($secondDate);
    

    これらの行はDateTime()を作成します それぞれの日付を持つオブジェクト。

    $interval  = $datetime1->diff($datetime2);
    

    この行は、最初の日付から2番目の日付を減算し、その差をDateInterval()として返します。 オブジェクト。

    if ($interval->days > 7)
    

    この行は、2つの日付の間に7日以上が経過したことを確認します。その場合、最初のコードブロックが実行されます。そうでない場合は、最初の日付が印刷されます。

    $elapsed   = $interval->format('%y years, %m months, %a days, %h hours, %i minutes, %S seconds');
    $elapsed   = str_replace(array('0 years,', ' 0 months,', ' 0 days,',  ' 0 hours,', ' 0 minutes,'), '', $elapsed);
    $elapsed   = str_replace(array('1 years, ', ' 1 months, ', ' 1 days, ',  ' 1 hours, ', ' 1 minutes'), array('1 year, ', '1 month, ', ' 1 day, ', ' 1 hour, ', ' 1 minute'), $elapsed);
    echo $elapsed;
    

    このコードブロックは、2つの日付の日付の差を取得します( DateInterval() オブジェクト)そしてあなたが要求したフォーマットでそれをフォーマットします。 2行目は、値がない期間(つまり、0か月)を削除し、それらを文字列から削除します。 3行目は、1つの値(つまり1か月)の期間を取り、最後に不要な「s」を削除します(つまり、1か月は1か月になります)。




    1. 外部キーIDを使用して2つのテーブルを結合する

    2. MySQLでグループ化すると、どの行のフィールドが返されますか?

    3. MySQLは、サブクエリが派生していないのに派生していると考えています。

    4. PHP5.3magickはgpcを引用します