如何INSERT天来保持MYSQL日历表最新?

时间:2012-06-22 16:44:09

标签: php mysql datetime insert

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

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

我也想知道是否有任何方法可以自动保持此表的最新状态。

我正在使用PHP,所以我想我每天都可以做一个新的INSERT?或者有没有办法在MYSQL中直接执行此操作?

感谢, 添

2 个答案:

答案 0 :(得分: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提供“EVENTS”,例如:

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

在这里阅读更多相关信息:

MySQL Create Event manual entry

  

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

_

  

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

答案 1 :(得分:0)

我认为执行所描述内容的最简单方法是设置每日定期任务来运行php脚本,例如cron作业。还有一个基于Web的提供程序,它将以便宜的定期计划从您的Web服务器调用脚本。 http://webcron.org