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