我想将一年中的每个日期添加到我的数据库表中。我怎么能这样做?
我在寻找谷歌,但没有任何线索。
请帮我一些插入查询来做到这一点。
这是我的表结构。
id | date
---------
1 | 2017-01-01
答案 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”。它会很好用。