【问题标题】:Updating date field based on two other timestamp fields根据其他两个时间戳字段更新日期字段
【发布时间】:2020-09-04 15:20:19
【问题描述】:

伙计们,我有以下示例表结构,

mysql> SELECT * FROM tbl_test_timestamp;
+----+---------------------+---------------------+---------------------+---------------------+
| id | t1                  | t2                  | date_created        | date_updated        |
+----+---------------------+---------------------+---------------------+---------------------+
| 16 | 2019-01-22 12:47:05 | 2019-03-15 14:50:13 | 2019-01-22 12:47:05 | 2020-05-14 16:11:22 |
| 20 | 2019-01-24 09:35:19 | 2019-03-14 07:12:31 | 2019-01-24 09:35:19 | 2020-05-14 16:11:22 |
| 22 | 2019-01-24 16:46:20 | 2019-01-24 16:46:20 | 2019-01-24 16:45:35 | 2020-05-14 16:11:22 |
| 23 | 2019-01-25 14:03:33 | 2019-04-08 07:48:53 | 2019-01-25 13:55:42 | 2020-05-14 16:11:22 |
+----+---------------------+---------------------+---------------------+---------------------+

我需要将 date_updated 字段设置为 t1 或 t2 中的较大者。我需要在超过 700 万条记录中运行此查询。

【问题讨论】:

    标签: mysql sql date sql-update


    【解决方案1】:

    这需要很长时间,但你可以做到:

    update t
        set date_updated = greatest(t1, t2);
    

    更新所有行可能需要很长时间。您可以考虑改为视图。

    【讨论】:

      【解决方案2】:

      你可以使用greatest():

      update tbl_test_timestamp set date_updated = greatest(t1, t2)
      

      请注意,如果 greatest() 的任何参数是 null,则 null 将返回 null。根据您的数据和您的用例,这可能会或可能不会担心。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-05-11
        • 2017-08-03
        • 2023-03-30
        • 1970-01-01
        • 1970-01-01
        • 2013-12-12
        • 2011-08-10
        相关资源
        最近更新 更多