我试图找出解决数据库架构问题的方法。
在第 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
除非保持原样就好。
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)
是的,绝对使用一个字段,如果需要,您可以稍后从中获取日期或时间。我相信您可以运行以下查询以使用正确的日期时间更新 col3。
UPDATE tablename
SET col3 = CAST(LEFT(col1, 10) + " " + col2 + ":00", DATETIME)
如果您没有任何东西可以访问这些旧字段(col1 和 col2),那么为了清楚起见,您应该删除它们。如果你这样做了,决定是否为相同的数据维护两个字段将是一件棘手的事情。
与其他答案相反...我不会立即建议合并这些列。
考虑如何查询列 - 根据我的经验,高效查询比磁盘空间效率更重要 - 因此,如果您想根据日期(忽略时间)和/或时间(忽略日期)选择行你会希望这些在单独的列中。虽然您可以从日期时间列中获取日期,但如果您有很多行,那么在运行查询之前对每一行执行此操作将非常低效。(例如......考虑这个SO问题)