1

calendarMYSQLデータベースにdatefield(type )という名前の1つのフィールドを持つテーブルがありますDATE

以前は2008-01-01から2010-01-01までの日付を挿入していましたが、現在の日付まで毎日追加したいと思います。残念ながら、私はこれをどのように行ったかを完全に忘れています。

また、このテーブルを最新の状態に保つプロセスを自動化する方法があるかどうか疑問に思っています。

INSERT私はPHPを使用しているので、毎日新しいことができると思いますか?または、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());

ここでそれについてもっと読む:

MySQLCreateEventマニュアルエントリ

イベントはスキーマに関連付けられています。event_nameの一部としてスキーマが示されていない場合は、デフォルトの(現在の)スキーマが想定されます。

_

STARTSを指定しないことは、STARTS CURRENT_TIMESTAMPを使用することと同じです。つまり、イベントに指定されたアクションは、イベントの作成直後に繰り返され始めます。

于 2012-06-22T17:22:42.690 に答える
0

あなたが説明することを行う最も簡単な方法は、cronジョブなどのphpスクリプトを実行するための毎日の定期的なタスクを設定することだと思います。安価で定期的なスケジュールでWebサーバーからスクリプトを呼び出すWebベースのプロバイダーもあります。http://webcron.org

于 2012-06-22T16:50:05.090 に答える