日付の仮想表

Tag:

日付データの仮想表を作る方法です。
実テーブルがなくても「今日から10日間の日付を表示」などすることができます。

今日から10日間の日付を表示

SELECT date_format(date_add(CURDATE(), interval tmp.generate_series - 1 day), '%Y-%m-%d') as 日付
FROM (SELECT 0 generate_series 
      FROM DUAL 
      WHERE (@num:=1-1)*0 
      UNION ALL
      SELECT @num:=@num+1 
      FROM `information_schema`.COLUMNS 
      LIMIT 10) as tmp;

実行結果
mysql_datev

曜日も追加で表示

SELECT date_format(date_add(CURDATE(), interval tmp.generate_series - 1 day), '%Y-%m-%d') as 日付,
       CASE dayofweek(date_format(date_add(CURDATE(), interval tmp.generate_series - 1 day), '%Y-%m-%d'))
         WHEN 1 THEN '日'
         WHEN 2 THEN '月'
         WHEN 3 THEN '火'
         WHEN 4 THEN '水'
         WHEN 5 THEN '木'
         WHEN 6 THEN '金'
         WHEN 7 THEN '土'
       END as 曜日
FROM (SELECT 0 generate_series 
      FROM DUAL 
      WHERE (@num:=1-1)*0 
      UNION ALL
      SELECT @num:=@num+1 
      FROM `information_schema`.COLUMNS 
      LIMIT 10) as tmp;

実行結果
mysql_datev2

今日から7日ごとの日付を10日分表示

SELECT date_format(date_add(CURDATE(), interval (tmp.generate_series - 1) * 7 day), '%Y-%m-%d') as 日付
FROM (SELECT 0 generate_series 
      FROM DUAL 
      WHERE (@num:=1-1)*0 
      UNION ALL
      SELECT @num:=@num+1 
      FROM `information_schema`.COLUMNS 
      LIMIT 10) as tmp;

実行結果
mysql_datev3

スポンサーリンク