我在MySQL中有一个表,我有一个日期和时间列。此列的格式为01 February 2013 12:49:40
。我想提取日期部分和时间部分以及月份部分。我正在使用month(01 February 2013 12:49:40)
这个函数,但它正在抛出错误。我无法使用Substring
,因为行的宽度不相等。我该怎么办。
答案 0 :(得分:3)
首先将其转换为实际日期(您所拥有的只是文本,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;
或者选择其他方法,有几种可能性......