【问题标题】:Need to combine timestamp field date with varchar field time需要将时间戳字段日期与 varchar 字段时间结合起来
【发布时间】:2012-06-07 22:10:30
【问题描述】:

我正在尝试找出解决数据库架构问题的方法。

在第 1 列中存储 y-m-d H:i:s 日期(时间戳字段)

col1 = 2009-11-12 00:00:00

在第 2 列中存储时间 (varchar)

col2 = 15:48

我认为将其存储在一列中会比单独存储更有效,因此我试图将第 3 列设为日期时间字段

col3 = 2009-11-12 15:48:00

除非保持原样也可以。

【问题讨论】:

    标签: mysql database datetime


    【解决方案1】:

    是的,绝对使用一个字段,如果需要,您可以稍后从中获取日期或时间。我相信您可以运行以下查询以使用正确的日期时间更新 col3。

    UPDATE tablename
    SET col3 = CAST(LEFT(col1, 10) + " " + col2 + ":00", DATETIME)
    

    如果您没有任何东西可以访问这些旧字段(col1 和 col2),您应该删除它们以清楚起见。如果你这样做了,决定是否为同一数据维护两个字段将是一件棘手的事情。

    【讨论】:

      【解决方案2】:

      Addtime 应该做你需要的事情

      mysql> select addtime('2012-05-05 00:00:00', '11:12');
      +-----------------------------------------+
      | addtime('2012-05-05 00:00:00', '11:12') |
      +-----------------------------------------+
      | 2012-05-05 11:12:00                     |
      +-----------------------------------------+
      1 row in set (0.00 sec)
      

      【讨论】:

        【解决方案3】:

        与其他答案相反...我不会立即建议合并这些列。

        考虑如何查询列 - 根据我的经验,高效查询比磁盘空间效率更重要 - 因此,如果您想根据日期(忽略时间)和/或时间(忽略日期)你会希望这些在单独的列中。虽然您可以从 datetime 列中获取日期,但如果您有 lots 行,那么在运行查询之前对每一行执行此操作将非常低效。 (例如......考虑这个SO question

        【讨论】:

        • 经过深思熟虑后,我将把它分开。我更喜欢高效的查询,谢谢
        猜你喜欢
        • 2017-08-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-23
        • 1970-01-01
        • 1970-01-01
        • 2013-12-25
        • 2019-09-23
        相关资源
        最近更新 更多