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

タイムスタンプmysql+PHPに基づいてデータを整理する

    これは私がこれをどのように処理するかの例です。クエリは変更しません。そのままで問題ありません。データベース内のすべてを最新の投稿から最も古い投稿の順に並べ替えて表示したいとします。 PHPに手間のかかる作業を任せましょう。読みやすくするために関数をネストするのではなく、意図的にいくつかのことを複数の行に分割しました。必要に応じて凝縮します。

    私はこれがそれを行うための最良の方法であるとは主張していません。私が使っているものだけ。

    //MOCK UP SOME DISPLAY DATA - YOU WOULD USE YOUR QUERY RESULT INSTEAD
    $rows = array();
    $rows[] = date('Y-m-d H:i:s');
    $rows[] = date('Y-m-d H:i:s');
    $rows[] = date('Y-m-d H:i:s');
    $rows[] = date('Y-m-d H:i:s', mktime(0, 0, 0, date('n'), date('j') - 1, date('Y')));
    $rows[] = date('Y-m-d H:i:s', mktime(0, 0, 0, 12, 24, 2014));
    $rows[] = date('Y-m-d H:i:s', mktime(0, 0, 0, 12, 25, 2014));
    $rows[] = date('Y-m-d H:i:s', mktime(0, 0, 0, 12, 26, 2014));
    $rows[] = date('Y-m-d H:i:s', mktime(0, 0, 0, 3, 2, 2001));
    
    //CREATE AN ARRAY OF THE REPLACEMENTS YOU WANT
    $aArray = array();
    $aArray[date('Y-m-d')] = 'Today';
    $aArray[date('Y-m-d', mktime(0, 0, 0, date('n'), date('j') - 1, date('Y')))] = 'Yesterday';
    $aArray[date('Y-m-d', mktime(0, 0, 0, date('n'), date('j') - 2, date('Y')))] = 'Day before Yesterday';
    $aArray['2014-12-25'] = 'Christmas 2014';
    
    //INITIALIZE SOME VARIABLES
    $cLastHeader = '';
    $cCurrHeader = '';
    
    //THIS WOULD BE YOUR QUERY RESULTS LOOP
    foreach ($rows AS $nNull => $cDate) {
        $cLookup = substr($cDate, 0, 10);  //TRIM OUT THE TIME FROM CURRENT RECORD
    
        //IS DATE IN ARRAY? IF NOT, FORMAT
        if (isset($aArray[$cLookup])) {
            $cCurrHeader = $aArray[$cLookup];
        } else {
            $cCurrHeader = $cLookup; //WOULD SHOW 'YYYY-MM-DD'
            $cCurrHeader = date('F Y', strtotime($cLookup)); //WOULD SHOW 'MONTH YYYY'
        }
    
        //HAS HEADER CHANGED? IF SO PRINT
        if ($cCurrHeader != $cLastHeader) {
            $cLastHeader = $cCurrHeader;
            print($cCurrHeader . "\n");
        }
    
        //PRINT RECORD
        print("\t" . $cDate . "\n");
    }
    

    これからの出力は:

    Today
        2015-05-28 18:40:35
        2015-05-28 18:40:35
        2015-05-28 18:40:35
    Yesterday
        2015-05-27 00:00:00
    December 2014
        2014-12-24 00:00:00
    Christmas 2014
        2014-12-25 00:00:00
    December 2014
        2014-12-26 00:00:00
    March 2001
        2001-03-02 00:00:00
    


    1. PostgreSQLのSUM()関数

    2. 修正:「演算子が存在しません:整数|| PostgreSQLの「整数」

    3. 休日を除く2つの日付の間の平日数を取得する関数

    4. Mysqlの最後の挿入IDを確認できますか?