私は08:00:00と20:00:00の間に30分rappresentingすべての行でテーブルを作成しようとしています。30分ごとのMySQLテーブル行
マイテーブル:
CREATE TABLE cal (
id INTEGER PRIMARY KEY,
year INTEGER NOT NULL,
month INTEGER NOT NULL,
day INTEGER NOT NULL,
half INTEGER NOT NULL,
hour INTEGER NOT NULL,
checked TINYINT(1) DEFAULT 0, -- Check if is reserved
) Engine = MyISAM;
と私の手順:
CREATE PROCEDURE fill_date_dimension(IN giorno DATE)
BEGIN
DECLARE currentdate DATE;
DECLARE stoppete DATE;
SET currentdate = '08:00:00';
SET stoppete = '20:00:00';
WHILE currentdate < stoppete DO
INSERT INTO cal VALUES (
concat(DATE_FORMAT(currentdate, '%Y'),DATE_FORMAT(currentdate, '%m'),DATE_FORMAT(currentdate, '%d'),DATE_FORMAT(currentdate, '%H'),DATE_FORMAT(currentdate, '%i')),
DATE_FORMAT(giorno, '%Y'),
DATE_FORMAT(giorno, '%m'),
DATE_FORMAT(giorno, '%d'),
DATE_FORMAT(currentdate, '%i'),
DATE_FORMAT(currentdate, '%H'),
0);
SET currentdate = DATE_ADD(currentdate,INTERVAL 30 MINUTE);
END WHILE;
END
しかし、私は( '2017年5月30日')fill_date_dimensionを呼び出すようにしようと、それはテーブルを移入することはありません。
私は問題がwhileループであり、mysqlは数時間以内にループすることができないと思うが、唯一の日だと思う。
のうち、最も可能性が高いです'08:00:00 'で日付の値(2017-05-30)の内容を更新します。 'set currentdate'行を削除し、' set stoppete = '2017-05-30 20:00:00'で 'set stoppete'を変更するとどうなりますか? – davejal
テストするより速いオプションは、 'set currentdate'と' set stoppete'の行を削除してそれがうまくいくかどうかをテストすることです。その後はそれに応じて制限することができます(午前8時から午後8時まで) – davejal
あなたが忘れています'、'の前に '0'を挿入し、挿入しようとしているフィールドの量を確認してください – davejal