到目前为止,我需要转换一个varchar字段。
我的静脉曲张是这样的:
Jan 11 17:18:53 +0000 2011 我需要:
2011-01-11有什么想法吗?
我试过:
DATE_FORMAT(STR_TO_DATE(my_field, '%Y-%m-%d'), '%Y-%m-%d') mydate 但这将返回NULL。
编辑-详细信息:
查询(字符串data_field):
SELECT date_field FROM my_table LIMIT 1;
+--------------------------------+
| date_field |
+--------------------------------+
| Tue Jan 11 17:18:53 +0000 2011 |
+--------------------------------+
1 row in set (0.00 sec)我试过:
SELECT STR_TO_DATE(date_field, '%Y') FROM my_table LIMIT 1;
+---------------------------------------+
| STR_TO_DATE(date_field, '%Y-%m-%d') |
+---------------------------------------+
| NULL |
+---------------------------------------+
1 row in set, 1 warning (0.00 sec)//其他查询
SELECT DATE_FORMAT(STR_TO_DATE(my_field, '%b %d %H:%i:%s +0000 %Y'), '%Y-%m-%d') FROM my_tableLIMIT 1;
+--------------------------------------------------------------------------
----------+
| DATE_FORMAT(STR_TO_DATE(my_field, '%b %d %H:%i:%s +0000 %Y'), '%Y-%m-%d') |
+--------------------------------------------------------------------------
----------+
| NULL
|
+-------------------------------------------------------------------------
----------+
1 row in set, 1 warning (0.00 sec)-编辑期末
解决方案!!YEYYY!!
在保罗的回复中,他建议我试一试:
DATE(STR_TO_DATE(my_field, '%b %d %H:%i:%s +0000 %Y'))这是正确的!
发送给所有项目经理和开发人员的信息:
请不要在varchars字段中保存日期!
谢谢大家!
发布于 2019-07-31 17:36:28
如果+0000部件总是相同且不重要,则可以使用:
DATE(STR_TO_DATE(my_field, '%b %d %H:%i:%s +0000 %Y'))这里使用的说明符是:
Specifier | Description
----------|------------
%b | Abbreviated month name (Jan..Dec)
%d | Day of the month, numeric (00..31)
%H | Hour (00..23)
%i | Minutes, numeric (00..59)
%s | Seconds (00..59)
%Y | Year, numeric, four digits请参阅格式()下文档中说明符的完整列表
发布于 2019-07-31 19:22:05
SELECT DATE_FORMAT(STR_TO_DATE('Jan 11 17:18:53 +0000 2011 ', '%b %d %H:%i:%s +0000 %Y'), '%Y-%m-%d'); 发布于 2019-07-31 17:46:30
我不认为+0000是一个固定的数字。所以我会用
Select STR_TO_DATE('Jan 11 17:18:53 +0000 2011','%b %e %H:%i:%s +%f %Y')https://stackoverflow.com/questions/57295944
复制相似问题