SQLite日期格式为字符串/文本,但没有前导零-如何获取日期



我已将csv从内部数据源导入sqlite数据库。

我无法控制内部数据源如何将其数据格式化为.

我的问题是日期字段,特别是月份,没有前导零。

提取字符串位置相同的日期有点麻烦。

以下是一些示例数据:

1/15/2021
10/16/2018
3/17/2019
5/12/2020

问题是,这种立场并不像每个日期都有一个前导零那么严格。由于我无法控制数据是如何发送给我的,我只能控制我如何解析它

我是SQLite的新手,尽管我多年前就使用过Oracle/SQL Server。

有什么建议吗?

谢谢你抽出时间。

您需要字符串函数将日期转换为YYYY-MM-DD

使用CASE表达式,该表达式使用运算符LIKE:检查所有可能的格式

CASE 
WHEN date LIKE '_/_/____' THEN SUBSTR(date, -4) || '-0' || SUBSTR(date, 1, 1) || '-0' || SUBSTR(date, 3, 1)
WHEN date LIKE '_/__/____' THEN SUBSTR(date, -4) || '-0' || SUBSTR(date, 1, 1) || '-' || SUBSTR(date, 3, 2)
WHEN date LIKE '__/_/____' THEN SUBSTR(date, -4) || '-' || SUBSTR(date, 1, 2) || '-0' || SUBSTR(date, 4, 1)
ELSE SUBSTR(date, -4) || '-' || SUBSTR(date, 1, 2) || '-' || SUBSTR(date, 4, 2)
END

或者,具有printf()功能:

SUBSTR(date, -4) || '-' ||
printf('%02d', date + 0) || '-' ||
printf('%02d', SUBSTR(date, INSTR(date, '/') + 1) + 0)

请参阅演示

相关内容

  • 没有找到相关文章