我在一个数据类型为DATE的SQLite表中有数据。数据的格式如下所示,例如:“Wed Aug 03 08:00:00 PDT 2022”如果我希望使用WHERE语句按日期进行筛选,如何使用此日期格式执行此操作?更好的是,屏蔽或修改这些数据以使用更典型的YYYY-MM-DD格式进行搜索的最佳方式是什么?如果有类似的问题贴出来回答这个问题,请让我知道,而不是无礼,我一定是错过了。我不会不看就问:)谢谢!
myss37ts1#
Sqlite不会以这种格式存储日期。实际上,SQLite没有用于日期的内部存储类型:SQLite没有为存储日期和/或时间预留的存储类。相反,SQLite的内置日期和时间函数能够将日期和时间存储为文本值、实数值或整数值:ISO8601字符串形式的文本(“YYYY-MM-DD HH:MM:SS.SSS”)。公元前4714年11月24日格林威治自中午起的天数,与儒略日的实数相同。作为Unix时间的整数,即自1970-01-01 00:00:00 UTC以来的秒数。如果您看到格式为“Wed Aug 03 08:00:00PDT 2022”的数据,很可能是Flexible Typing的情况,其中SQLite将字符串值“按原样”存储在日期字段中,因为它无法将其识别为日期。因此,您需要使用字符串操作函数从字符串中提取值,从而将其转换为正确的日期值(可以是YYYY-MM-DD HH:MM:SS格式的数字或字符串)。还要注意的是,Sqlite不支持时区识别(除了本地时间)。
1条答案
按热度按时间myss37ts1#
Sqlite不会以这种格式存储日期。实际上,SQLite没有用于日期的内部存储类型:
SQLite没有为存储日期和/或时间预留的存储类。相反,SQLite的内置日期和时间函数能够将日期和时间存储为文本值、实数值或整数值:
ISO8601字符串形式的文本(“YYYY-MM-DD HH:MM:SS.SSS”)。
公元前4714年11月24日格林威治自中午起的天数,与儒略日的实数相同。
作为Unix时间的整数,即自1970-01-01 00:00:00 UTC以来的秒数。
如果您看到格式为“Wed Aug 03 08:00:00PDT 2022”的数据,很可能是Flexible Typing的情况,其中SQLite将字符串值“按原样”存储在日期字段中,因为它无法将其识别为日期。
因此,您需要使用字符串操作函数从字符串中提取值,从而将其转换为正确的日期值(可以是YYYY-MM-DD HH:MM:SS格式的数字或字符串)。还要注意的是,Sqlite不支持时区识别(除了本地时间)。