插入一年中mysql的每个日期

时间:2017-01-27 06:56:15

标签: mysql

我想将一年中的每个日期添加到我的数据库表中。我怎么能这样做?

我在寻找谷歌,但没有任何线索。

请帮我一些插入查询来做到这一点。

这是我的表结构。

id | date
---------
1 | 2017-01-01

3 个答案:

答案 0 :(得分:1)

澄清问题后更新。

这是一个更新版本,试试这个。要使while循环起作用,您需要将其创建为存储过程。像这样创建存储过程

DELIMITER $$

create PROCEDURE insert_year_dates() 
BEGIN 
    SET @t_current = NOW(); 
    SET @t_end = DATE_ADD(NOW(), INTERVAL 1 YEAR); 
    WHILE(@t_current< @t_end) DO 
        INSERT INTO day (day) VALUES (@t_current); 
        SET @t_current = DATE_ADD(@t_current, INTERVAL 1 DAY); 
    END WHILE; 
END; 

然后使用

调用该存储过程
CALL insert_year_dates()

答案 1 :(得分:1)

您可以先尝试获取日期之间的所有日期并添加它。

insert into day (date)
    select * from 
    (select adddate('1970-01-01',t4.i*10000 + t3.i*1000 + t2.i*100 + t1.i*10 + t0.i) selected_date from
     (select 0 i 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) t0,
     (select 0 i 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) t1,
     (select 0 i 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) t2,
     (select 0 i 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) t3,
     (select 0 i 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) t4) v
    where selected_date between '2017-01-01' and '2017-12-31'

答案 2 :(得分:-1)

在mysql中,您可以选择仅填充日期格式的列。您可以将数据插入“2017”或“17”。它会很好用。