ホームページ >データベース >mysql チュートリアル >mysql で連続した日付と変数の代入を生成する方法
説明: 主に統計データを時系列で表示するために使用されます;
データベース データに翌日のデータがある場合、統計データは0 であっても毎日表示する必要がある場合は、使用するタイムテーブルを生成する必要があります;
データベース データのクエリ:
SELECT DATE_FORMAT( create_time, '%Y-%m-%d' ) AS date, COUNT(1) AS numb FROM qc_task WHERE create_time>= DATE_SUB(CURDATE(),INTERVAL 1 MONTH) and department_id IN ( SELECT id FROM `vigilante_jinan`.`qc_department` WHERE `area_code` = (@dep_BH) AND `status` = '1' AND dept_level >= (@dep_DJ)) GROUP BY DATE_FORMAT( create_time, '%Y-%m-%d' )
翌日データを出力:
これでいい感じではないですか? 1階ずつ追加して並べる必要がある場合は、次のようにすることもできます。 ...
しかし、たとえ退院した場合でも、時刻は一貫性がありません;
過去 7 日間の日付を生成します:
// 方法笨,但还是有效的 select DATE_FORMAT(SUBDATE(NOW(), interval (timeList.sj*1460) MINUTE),'%Y-%m-%d') as 'datetime' from (SELECT @num:=@num+1 as sj from (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7) t, -- (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7) t1, -- 假如嫌弃生成的少,打来这个就行 (SELECT @num:=0) y) as timeList
Generate時刻:
生成後の使用:
-- 生成后左右链接即可,但主表要为时间表 SELECT f.datetime, t.numb FROM (SELECT DATE_FORMAT( create_time, '%Y-%m-%d' ) AS date, COUNT(1) AS numb FROM qc_task WHERE create_time>= DATE_SUB(CURDATE(),INTERVAL 1 MONTH) and department_id IN ( SELECT id FROM `vigilante_jinan`.`qc_department` WHERE `area_code` = (@dep_BH) AND `status` = '1' AND dept_level >= (@dep_DJ)) GROUP BY DATE_FORMAT( create_time, '%Y-%m-%d' )) t right join (select DATE_FORMAT(SUBDATE(NOW(), interval (timeList.sj*1460) MINUTE),'%Y-%m-%d') as 'datetime' from (SELECT @num:=@num+1 as sj from (SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7) t, (SELECT @num:=0) y) as timeList) f on t.date = f.datetime ;
使用後:
ここのデータベースにはデータがないので、数量表示は表示されません
そこにあります。最初の文には @ 記号がたくさんありますよね? これらはすべて変数です。クエリ ステートメントを含めると、クエリ ステートメント全体が肥大化して非常に長くなります...そのため、いくつかのものを分割することができます;
たとえば、クエリ データベース ステートメントでは次のようになります。
彼らの素顔を見てみましょう:
りー以上がmysql で連続した日付と変数の代入を生成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。