1

calendar我的MYSQL 数据库中有一个表,其中有一个名为datefield(type DATE) 的字段。

以前我插入了从 2008-01-01 到 2010-01-01 的日期,但现在我想每天添加直到当前日期。不幸的是,我完全忘记了我是怎么做到的。

我还想知道是否有任何方法可以自动化保持此表最新的过程。

我正在使用 PHP,所以我想我可以INSERT每天做一个新的?或者有什么方法可以直接在 MYSQL 中做到这一点?

谢谢,蒂姆

4

2 回答 2

2

这是一个快速破解:

drop table if exists dates;
create table dates(datefield date);


drop procedure if exists insertDates;

delimiter $$
create procedure insertDates(start_date date)
begin
set @days = 0;
set @end_date = str_to_date('1970-01-01', '%Y-%m-%d');

while (@end_date < curdate()) do
insert into dates
select
date_add(start_date, interval @days day)
from (select @days:=@days+1) r
;
set @end_date:=(select max(datefield) from dates);
end while
;

end $$

delimiter ;

call insertDates('2012-06-06');

select * from dates;

对于每日插入,您可以尝试 cron 作业或 MySQL 提供“事件”,例如:

CREATE EVENT yourDB_Schema.insertDateEachDay
ON SCHEDULE EVERY 1 DAY
DO
INSERT INTO yourTable (yourDateColumn) VALUES (CURDATE());

在此处阅读更多信息:

MySQL 创建事件手动输入

事件与模式相关联。如果未将模式指示为 event_name 的一部分,则假定默认(当前)模式。

_

不指定 STARTS 与使用 STARTS CURRENT_TIMESTAMP 相同,即为事件指定的操作在创建事件后立即开始重复。

于 2012-06-22T17:22:42.690 回答
0

我认为执行您所描述的最简单的方法是设置每日重复任务来运行 php 脚本,例如 cron 作业。还有一个基于 Web 的提供程序,它会以廉价、重复的时间表从您的 Web 服务器调用脚本。http://webcron.org

于 2012-06-22T16:50:05.090 回答