MySQL:将一个包含日期文本的字符串列作为日期字段使用

4

我正在进行数据库迁移,目前有一个字符串列包含日期信息(而不是最佳的datetime字段)。是否有MySQL中可以调用的函数将此字段转换为datetime,以便我可以使用日期功能,例如在此日期之前或之后?

3个回答

11
SELECT  *
FROM    mytable
WHERE   CAST(mydatefield AS DATETIME) >= CAST('2009-01-01' AS DATETIME)

如果你的日期格式比较奇怪,MySQL无法理解,可以使用STR_TO_DATE函数:

SELECT  *
FROM    mytable
WHERE   STR_TO_DATE(mydatefield, '%Y, %d %m') >= STR_TO_DATE('2009, 01 01', '%Y, %d %m')

2

STR_TO_DATE函数 - 参考文献

示例:

select str_to_date('10-oct-2006', "%d-%b-%Y"); 

1

当从表中检索日期时,您可以将其转换为时间戳:

SELECT *
FROM my_table
WHERE UNIX_TIMESTAMP(my_time) > UNIX_TIMESTAMP("2000-10-18 12:30:40");

如果调用没有参数,则返回一个Unix时间戳(自'1970-01-01 00:00:00' UTC以来的秒数),作为无符号整数。如果使用日期参数调用UNIX_TIMESTAMP(),则它将参数的值作为自“1970-01-01 00:00:00” UTC以来的秒数返回。日期可以是DATE字符串、DATETIME字符串、时间戳或YYMMDD或YYYYMMDD格式的数字。服务器将日期解释为当前时区中的值,并将其转换为UTC中的内部值。客户端可以按照第9.7节“MySQL服务器时区支持”中的描述设置其时区。
有关更多信息,请查看MySQL网站上UNIX_TIMESTAMP的文档。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接