【发布时间】:2009-12-15 15:56:00
【问题描述】:
我正在进行数据库迁移,我目前有一个带有日期的字符串列(而不是为这些设置了最佳日期时间字段)。是否可以在 MySQL 中调用一个函数来将此字段转换为日期时间,以便我可以使用日期功能,例如在此日期之前或之后的日期?
【问题讨论】:
我正在进行数据库迁移,我目前有一个带有日期的字符串列(而不是为这些设置了最佳日期时间字段)。是否可以在 MySQL 中调用一个函数来将此字段转换为日期时间,以便我可以使用日期功能,例如在此日期之前或之后的日期?
【问题讨论】:
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')
【讨论】:
【讨论】:
在从表中检索日期时,您始终可以将日期转换为时间戳:
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 的文档。
【讨论】: