mysql使用select query中的列更新整个列

时间:2014-02-15 02:57:45

标签: mysql sql datetime

我在现有数据库中分隔了日期和时间列,现在我想将一个DateTime列中的这两列与UTC TimeZone合并。我通过以下查询获取带有日期时间的转换时间的检索列

(SELECT convert_tz(t1, @@session.time_zone, '+00:00') FROM (SELECT CONCAT(`cDate`, ' ', `cTime`) AS t1 FROM testTable2) AS t2)

现在我想更新同一个表中的一个列。

UPDATE `testtable2` SET cDateTime = (SELECT convert_tz(t1, @@session.time_zone, '+00:00') FROM (SELECT CONCAT(`cDate`, ' ', `cTime`) AS t1 FROM testTable2) AS t2)

这不起作用,因为它期待一行。如何在不使用任何过程调用或函数的情况下执行此操作?谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

我现在无法测试(我的本地MySQL安装存在问题),但我认为没有理由不这样做:

UPDATE testtable2 SET cDateTime = convert_tz(CONCAT(cDate, ' ', cTime), @@session.time_zone, '+00:00')

此外,如果该查询预计会在大量行上运行,或者非常频繁,那么它将不会通过字符串生成/连接/解析,而是使用日期时间算术......