SQL - 将列类型从文本更改为日期和时间

时间:2014-07-30 14:58:53

标签: mysql sql datetime

我有一个包含两列的表,我想更改其数据类型。两者目前都只是声明为文本,但我想将DateSent更改为日期,将TimeSent更改为时间。数据目前为MM / DD / YYYY格式的日期和HH:MM(24小时)的时间。

如何做到这一点?当我将来添加数据时,它会自动正确地转换任何合理的日期和时间格式吗?

1 个答案:

答案 0 :(得分:0)

您无法一步完成此操作。您需要做的是为您的日期添加一个新列,然后使用将字符串转换为日期的UPDATE语句填充它;使用CAST('mm / dd / yyyy'AS DATE)。然后,您可以删除旧列,并重命名新列。

保存时间数据的列的步骤相同。

您需要在未来以正确的类型添加新数据;日期或时间。


每个OP请求我将使用示例查询编辑Mark的答案

示例更新查询:

UPDATE table_name t,
(
    SELECT
        id, 
        CAST(col1 AS DATE) as update_col1
        CAST(col2 AS TIME) as update_col2
    FROM table_name
) as t1
SET t.col1 = t1.update_col1, t.col2 = t1.update_col2
WHERE t.id = t1.id