需要将timestamp字段日期与varchar字段时间相结合

时间:2012-06-07 22:10:30

标签: mysql database datetime

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

在第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

除非保持原件正常。

3 个答案:

答案 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