MySQL使用带有日期文本的字符串列作为日期字段

时间:2009-12-15 15:56:01

标签: mysql string datetime

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

3 个答案:

答案 0 :(得分:7)

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')

答案 1 :(得分:2)

STR_TO_DATE功能 - ref

示例:

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

答案 2 :(得分:0)

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

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可以是DATE字符串,DATETIME字符串,TIMESTAMP或格式为YYMMDD或YYYYMMDD的数字。服务器将日期解释为当前时区中的值,并将其转换为UTC的内部值。客户端可以按第9.7节“MySQL服务器时区支持”中所述设置其时区。

有关更多信息,请查看MySQL网站上UNIX_TIMESTAMP的文档。