【问题标题】:How to correctly parse date from Integer column in Sqlite如何正确解析 Sqlite 中整数列中的日期
【发布时间】:2020-12-15 11:13:39
【问题描述】:

如何正确解析以这种格式存储在 Sqlite db:20200813 中的日期? 我试着这样做:

Select strftime('%Y%m%d', 20200813, 'localtime');

但它返回 Null。 我想将该列中的日期与当前日期进行比较。 如何正确操作?

【问题讨论】:

  • 请阅读标签信息(stackoverflow.com/tags/sqlite/info),了解如何提供minimal reproducible example
  • strftime() 仅将 YYYY-MM-DD 日期格式化为其他格式。您的日期不是 SQLite 的有效日期。使用 substr() 之类的字符串函数将其格式化为 YYYY-MM-DD。
  • 这是一个数字,而不是要解析的字符串。只是不要像这样在 SQLite 或任何其他数据库中存储日期。在其他数据库中使用适当的date 类型。对于 SQLite,您必须使用expected formats 之一才能使用任何与日期相关的函数。
  • 不是我,谁编写了这个应用程序,除了处理我拥有的东西,我别无选择。

标签: sql string sqlite date


【解决方案1】:

SQLite 没有将字符串转换为日期的内置方法。它甚至没有 date 数据类型(日期只是字符串,您可以在其上使用日期函数)。

你可以用字符串函数做你想做的事:

select
    substr(20200813, 1, 4)
    || '-' || substr(20200813, 5, 2)
    || '-' || substr(20200813, 8, 2)

这会为您提供一个有效的日期字符串(格式为YYYY-MM-DD),然后您可以使用日期函数或运算符。

【讨论】:

    猜你喜欢
    • 2020-07-31
    • 1970-01-01
    • 1970-01-01
    • 2012-09-04
    • 1970-01-01
    • 1970-01-01
    • 2015-09-23
    • 1970-01-01
    • 2013-07-10
    相关资源
    最近更新 更多