【问题标题】:mysql update entire column with column from select querymysql用选择查询中的列更新整个列
【发布时间】:2014-02-15 02:57:44
【问题描述】:

我在现有数据库中分隔了日期和时间列,现在我想将这两列与 UTC 时区合并到一个 DateTime 列中。我使用以下查询检索转换时间的列与日期时间

(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)

这不起作用,因为它需要一行。如何在不使用任何过程调用或函数的情况下做到这一点?感谢您的帮助!

【问题讨论】:

  • 不使用过程或函数的理由是什么?还有其他我们可能需要注意的限制吗?例如,您可以使用临时表吗?这个查询是打算执行多次还是只执行一次?
  • 为什么还要选择内部?

标签: mysql sql datetime


【解决方案1】:

我现在无法测试(我的本地 MySQL 安装存在问题),但我看不出你为什么不能简单地测试:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-16
    • 1970-01-01
    • 2013-04-26
    • 1970-01-01
    • 2019-10-10
    • 1970-01-01
    • 2023-04-04
    • 2015-11-11
    相关资源
    最近更新 更多