首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >确定日期格式09-08-2014

确定日期格式09-08-2014
EN

Stack Overflow用户
提问于 2014-08-08 12:37:57
回答 3查看 131关注 0票数 2

mysql中有5000多条记录,其中日期以varchar格式存储。

示例日期和格式

代码语言:javascript
复制
09-08-2014 dd-mm-yy 
4-2-2014 mm-dd-yy
2014-4-4 yy-mm-dd

如何识别每种日期格式并将其更改为通用格式?

我面临的问题是,当我运行一个查询来获取dd时,我也会得到的相同值。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-08-09 06:12:21

谢谢你们的帮助

我通过REGEX解决了这个问题,因为它在varchar format.Had中生成了所有可用格式的regex。

利用该正则表达式对dd/mm/yy -REGEXP‘0-9{2}/0-9{2}/0-9{4}’进行滤波;

参考http://www.tech-recipes.com/rx/484/use-regular-expressions-in-mysql-select-statements/

票数 0
EN

Stack Overflow用户

发布于 2014-08-08 13:07:29

没有规则意味着没有算法。

你所要求的听起来像是一次工作,以获得合理的数据的方式。

当您到达存储为varchars的日期时,许多事情可能是错误的。你提到的那些和其他最糟糕的事情,比如没有像60/90/2014这样的约会

但是,列的一个一般规则是它的内容是一致的,所以如果您有xx-yy-AAAA形式的字符串,其中xx大于12或yy大于12,则可以使用一些查询进行调查,而则假定所有列都共享相同的格式。

票数 0
EN

Stack Overflow用户

发布于 2014-08-08 13:13:11

有一种方法,,但对于mm和dd格式,对于dd和mm值小于或等于12的格式,它是不明确的

创建表并插入示例值:

代码语言:javascript
复制
create table dates(
    stored_date varchar(20)
);


insert into dates (stored_date)
values 
('09-08-2014'),
('4-2-2014'),
('2014-4-4');

查询提取每一行的日期值:

代码语言:javascript
复制
select stored_date,  
case 
  when date(stored_date) = stored_date then
    date(stored_date)
  when str_to_date(stored_date,'%d-%m-%Y') is not null then
    str_to_date(stored_date,'%d-%m-%Y')
  when str_to_date(stored_date,'%m-%d-%Y') is not null then
    str_to_date(stored_date,'%m-%d-%Y')
 else 
    null
 end as parsed_date
from dates;

结果:

代码语言:javascript
复制
+-------------+-------------+
| stored_date | parsed_date |
+-------------+-------------+
| 09-08-2014  | 2014-08-09  |
| 4-2-2014    | 2014-02-04  |
| 2014-4-4    | 2014-04-04  |
+-------------+-------------+

您需要手动筛选日期格式,但可能是一些行(而不是5000条记录)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25203741

复制
相关文章

相似问题

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