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