1

我必须更新同一张表中的两列。列分别包含同一时间点的 DATE 和 TIME。我必须将此时间点减少 7 小时并将结果保存回那 2 列。我正在使用这个查询

update wp_2_em_events 
set event_start_time = DATE_FORMAT(
    DATE_SUB(concat(event_start_date,' ',event_start_time), 
        INTERVAL 7 HOUR), 
    '%H:%i:%s'), 
event_start_date = DATE_FORMAT(
    DATE_SUB(concat(event_start_date,' ',event_start_time), 
        INTERVAL 7 HOUR),
    '%Y-%m-%d'),

如您所见,第二列 ( event_start_date) 无法正确更新,因为表达式使用了已更新的参数。

让我知道如何同时更新两列或将更改的日期时间存储到临时变量并将其用于两列?

4

1 回答 1

0

这是使用临时变量的解决方案

update wp_2_em_events
set event_start_time = DATE_FORMAT(
     (@t := DATE_SUB(concat(event_start_date,' ',event_start_time), 
          INTERVAL 7 HOUR)),'%H:%i:%s'),
    event_start_date = DATE_FORMAT(@t,'%Y-%m-%d')
于 2013-09-23T03:14:15.353 回答