1

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

在第 1 列中存储了一个 ymd H:i:s 日期(时间戳字段)

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

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

col2 = 15:48

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

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

除非保持原样就好。

4

3 回答 3

1

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)
于 2012-06-07T22:16:54.847 回答
1

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

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

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

于 2012-06-07T22:17:31.447 回答
1

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

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

于 2012-06-07T22:19:53.413 回答