我在 MySQL 中有一个表,其中有一个日期和时间列。此列的格式为 2013 年 2 月 1 日 12:49:40
。我也想提取日期部分和时间部分以及月份部分。我正在使用 month(01 February 2013 12:49:40)
这个函数,但它抛出错误。我不能使用 Substring
,因为行的宽度不相等。我应该怎么办。
最佳答案
首先把它转换成一个真实的日期(你有的只是文本,MySQL 不知道它是一个日期)
SELECT STR_TO_DATE(your_column, '%d %M %Y %H:%i:%s')
然后你可以使用诸如 year(), month(), time() 之类的函数来获得你想要的...
SELECT YEAR(STR_TO_DATE(your_column, '%d %M %Y %H:%i:%s')) FROM your_table...
当然,更好的方法是将列更改为数据类型 datetime 或 timestamp。然后您每次都可以省去 STR_TO_DATE() 函数。
通过在表中添加日期时间或时间戳列来实现
ALTER TABLE your_table ADD COLUMN your_column datetime;
然后“复制”您的列
UPDATE yourTable SET new_column = STR_TO_DATE(old_column, '%d %M %Y %H:%i:%s');
然后您可以删除当前列。
ALTER TABLE DROP COLUMN your_current_column;
或者选择另一种方法,几种可能性...
关于MySQL日期转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18446304/