首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >全日伐查

全日伐查
EN

Stack Overflow用户
提问于 2019-07-31 17:12:12
回答 4查看 80关注 0票数 1

到目前为止,我需要转换一个varchar字段。

我的静脉曲张是这样的:

代码语言:javascript
复制
 Jan 11 17:18:53 +0000 2011 

我需要:

代码语言:javascript
复制
2011-01-11

有什么想法吗?

我试过:

代码语言:javascript
复制
DATE_FORMAT(STR_TO_DATE(my_field, '%Y-%m-%d'), '%Y-%m-%d') mydate 

但这将返回NULL。

编辑-详细信息:

查询(字符串data_field):

代码语言:javascript
复制
 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)

我试过:

代码语言:javascript
复制
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)

//其他查询

代码语言:javascript
复制
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!!

在保罗的回复中,他建议我试一试:

代码语言:javascript
复制
DATE(STR_TO_DATE(my_field, '%b %d %H:%i:%s +0000 %Y'))

这是正确的!

发送给所有项目经理和开发人员的信息:

请不要在varchars字段中保存日期!

谢谢大家!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-07-31 17:36:28

如果+0000部件总是相同且不重要,则可以使用:

代码语言:javascript
复制
DATE(STR_TO_DATE(my_field, '%b %d %H:%i:%s +0000 %Y'))

这里使用的说明符是:

代码语言:javascript
复制
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

请参阅格式()下文档中说明符的完整列表

票数 2
EN

Stack Overflow用户

发布于 2019-07-31 19:22:05

代码语言:javascript
复制
SELECT DATE_FORMAT(STR_TO_DATE('Jan 11 17:18:53 +0000 2011 ', '%b %d %H:%i:%s +0000 %Y'), '%Y-%m-%d'); 
票数 1
EN

Stack Overflow用户

发布于 2019-07-31 17:46:30

我不认为+0000是一个固定的数字。所以我会用

代码语言:javascript
复制
Select STR_TO_DATE('Jan 11 17:18:53 +0000 2011','%b %e %H:%i:%s +%f %Y')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57295944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档