-- 写一个关于日期时间处理的工具,content_text是要处理的原始数据,从中抽取出日期+时间,content_text有中文,英文,及文书内容等,中文日期+英文时间等多种错乱数据
-- 使用说明,将content_text换成自己想转的文字,转换看看,case when时间,简单明了
SELECT min(file_id) as file_id ,content_text,
CASE
WHEN LOCATE('年',content_text)>0 THEN -- 这些是中文的
CASE
WHEN LOCATE('秒',content_text)>0 THEN
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(SUBSTRING(trim(content_text),1,LOCATE('秒',trim(content_text))),'年','-'),'月','-'),'日',' '),'时',':'),'分',':'),'秒','')
WHEN LOCATE('分',content_text)>0 THEN
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(SUBSTRING(trim(content_text),1,LOCATE('分',trim(content_text))),'年','-'),'月','-'),'日',' '),'时',':'),'分','')
WHEN LOCATE(':',content_text)>0 THEN -- 中文日期掺杂英文日期
REPLACE(REPLACE(REPLACE(SUBSTRING(trim(content_text),1,LOCATE(':',trim(content_text))+2),'年','-'),'月','-'),'日',' ')
ELSE REPLACE(REPLACE(REPLACE(SUBSTRING(trim(content_text),1,LOCATE('日',trim(content_text))),'年','-'),'月','-'),'日',' ')
END
ELSE -- 这些是英文格式的
CASE
WHEN LOCATE(':',content_text)>0 THEN substring(trim(content_text),1,LOCATE(':',trim(content_text))+2)
ELSE SUBSTRING(trim(content_text),1,10) END
END
as file_time
from 10001_rough_base A
WHERE control_name='记录时间'
GROUP BY A.file_id