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

日付がmysqlに存在しない場合でも、MySQLで過去30日間の日付を選択するにはどうすればよいですか?

    簡略化されたサンプルテーブルtable1を想定しています 以下の内容で

    CREATE TABLE table1 (lastUpdated datetime);
    INSERT INTO table1 (lastUpdated) VALUES ('2016-03-23');
    INSERT INTO table1 (lastUpdated) VALUES ('2016-03-24');
    INSERT INTO table1 (lastUpdated) VALUES ('2016-03-30');
    INSERT INTO table1 (lastUpdated) VALUES ('2016-03-31');
    INSERT INTO table1 (lastUpdated) VALUES ('2016-04-02');
    INSERT INTO table1 (lastUpdated) VALUES ('2016-03-31');
    

    次に、次のMySQLステートメントは、過去30日間のすべての日付を返し、カウントは0で、table1にエントリが見つかりません。 :

    SELECT lastUpdated, count(*)-1 FROM (
        SELECT date(lastUpdated) as lastUpdated FROM table1 as t1
        UNION ALL 
        SELECT curdate() - interval a day AS lastUpdated FROM (
            select 0 as a union select 1 union select 2 union select 3 union
            select 4 union select 5 union select 6 union select 7 union
            select 8 union select 9 union select 10 union select 11 union
            select 12 union select 13 union select 14 union select 15 union 
            select 16 union select 17 union select 18 union select 19 union
            select 20 union select 21 union select 22 union select 23 union
            select 24 union select 25 union select 26 union select 27 union
            select 28 union select 29
        ) as t2
    ) as t3 GROUP BY lastUpdated;
    



    1. JDBCが誤った数の影響を受ける行を返す

    2. MySQLまたはMariaDBのGaleraClusterのパフォーマンスを向上させる

    3. MySQLはミリ秒フィールドからフォーマットされた日付を選択します

    4. mysqlからの再帰的phpを使用した配列の作成