如何更新MySQL中的两个(或更多)可靠列

时间:2013-09-23 02:57:20

标签: mysql date datetime

我必须在同一个表中更新两列。列包含相同时间点的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)无法正确更新,因为表达式已使用已更新的参数。

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

1 个答案:

答案 0 :(得分: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')