我使用MySQL的事件调度器定期执行代码,即每天或每小时。在我的代码中,我使用“CURDATE()”并将其分配给一个变量。不幸的是,MySQL只在第一个实例中计算。它不会在每次迭代中重新计算它,这意味着第一次通过它时会有正确的日期,但之后每次都会有错误的日期。如果我手动运行代码(即不使用事件调度器),也会发生同样的情况。
如何强制MySQL重新计算变量?
我试过这个(这只第一次有效):
SET @stmt := CONCAT('ALTER TABLE myTable ADD myColum_', DATE_FORMAT(NOW(), '%Y_%M_%D_%H_%m'), ' SMALLINT(5);');
PREPARE stmt from @stmt;
EXECUTE stmt;
还有这个(这个第一次都不管用):
PREPARE stmt from ALTER TABLE myTable ADD
CONCAT('myColumn_', DATE_FORMAT(NOW(), '%Y_%M_%D_%H_%mm'), '
SMALLINT(5);'); EXECUTE stmt;