gpt4 book ai didi

mysql - 在 MySQL 中,如何从一列输入不一致的日期中提取年份作为字符串?

转载 作者:行者123 更新时间:2023-11-29 04:35:19 25 4
gpt4 key购买 nike

将数据迁移到新数据库,并希望从正确的角度开始。以前的开发人员让用户手动输入日期范围,并将所有内容作为字符串存储在一列中。格式包括(但不限于):

September 2008 – March 2010 

May 2015 – Present

2007 – 2008

July, 1995 – March, 1997

July, 1995 – Current

是的,它非常丑陋。展望 future ,我想将它们分成两列,开始日期和结束日期,以便可以动态创建信息。我能找到的唯一一致的模式是所有开始日期都包含年份,所有结束日期都包含年份或表明范围仍在增长。另一种模式是每个日期都可以按“-”模式拆分。如果有一种简单的方法来提取月份,我很乐意研究它,但月份对于此目的并不重要,因此提取年份的答案绰绰有余。

最佳答案

这是一种方法:

select (case when substring_index(col, ' - ', 1) regexp '^[0-9]{4}$'
then substring_index(col, ' - ', 1)
when substring_index(col, ' - ', 1) regexp '[0-9]{4}$'
then right(substring_index(col, ' - ', 1), 4)
else 'Unknown'
end) as startYear,
(case when substring_index(col, ' - ', -1) regexp '^[0-9]{4}$'
then substring_index(col, ' - ', -1)
when substring_index(col, ' - ', -1) regexp '[0-9]{4}$'
then right(substring_index(col, ' - ', -1), 4)
when substring_index(col, ' - ', -1) like '%Current%' or
substring_index(col, ' - ', -1) like '%Present%'
then date_format(now(), '%Y')
else 'Unknown'
end) as endYear

如果您在结果列中发现 'Unknown' 值,您可能需要额外的逻辑。

关于mysql - 在 MySQL 中,如何从一列输入不一致的日期中提取年份作为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44029417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com