gpt4 book ai didi

sql - 类似查询的不同结果取决于sqlite3中日期字符串的格式

转载 作者:行者123 更新时间:2023-12-03 19:37:50 24 4
gpt4 key购买 nike

我在sqlite3中有两个表:

sqlite> create table date_1 (date text);
sqlite> create table date_2 (date text);


每个表包含三行,并用不同的格式写出日期:

sqlite> select * from date_1;
28.09.2015
28.08.2015
29.08.2015
sqlite> select * from date_2;
2015-09-28
2015-08-28
2015-08-29


我当前的日期是:

sqlite> select date('now');
2015-09-29


为什么下一个类似的查询会有不同的结果?

sqlite> select * from date_1 where date < strftime('%d.%m.%Y', 'now', '-1 day');
28.08.2015
sqlite> select * from date_2 where date < strftime('%Y-%m-%d', 'now', '-1 day');
2015-08-28
2015-08-29


为什么第一个查询也不会返回“ 29.08.2015”?

最佳答案

SQLite has no date type。当您执行date < strftime(...)时,您正在进行字符串比较。与字符串相比,ISO 8601日期格式(如2015-08-28)将作为日期进行比较。 28.08.2015不会,它将首先权衡一天,然后是月份,然后是年份。

strftime仅了解有限的一组格式(请参见"Time Strings"),而28.09.2015不是其中一种。以ISO 8601格式存储所有日期,或遵循the answers to this question cover how to compare dates in SQLite

关于sql - 类似查询的不同结果取决于sqlite3中日期字符串的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32850355/

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