我在查询中遇到问题 我无法获得想要的正确结果日期 我需要获取今天的所有日期或少于今天的日期
您能帮助我还是给我正确的查询以供使用
例如,这是 mytable
id(number) datestring(string)
1 02/06/2019
2 02/06/2019
3 02/14/2019
4 02/04/2019
5 03/17/2019
我使用的查询: SELECT * FROM mytable WHERE datestring <= date('now')
预期结果是
id(number) datestring(string)
1 02/06/2019
2 02/06/2019
4 02/04/2019
感谢您的帮助
答案 0 :(得分:1)
您遇到的问题是date('now')将返回2019-02-06,例如表中的所有行均以0开头且小于2。
您需要将其中一个日期转换为与其他日期相同的格式,或者在存储数据时使用相同的格式。
SQLite本身具有多种可以识别和使用的日期格式,建议使用其中一种以降低必要的复杂性。
时间字符串时间字符串可以采用以下任何格式:
YYYY-MM-DD YYYY-MM-DD HH:MM YYYY-MM-DD HH:MM:SS YYYY-MM-DD HH:MM:SS.SSS YYYY-MM-DDTHH:MM YYYY-MM-DDTHH:MM:SS YYYY-MM-DDTHH:MM:SS.SSS HH:MM HH:MM:SS HH:MM:SS.SSS now DDDDDDDDDD
SQL As Understood By SQLite - Date And Time Functions
以下是一种可用于转换查询中的 datestring 列的解决方案:-
SELECT * FROM mytable WHERE substr(datestring,7,4)||'-'||substr(datestring,1,2)||'-'||substr(datestring,4,2) <= date('now');
以下内容可用于将现有数据转换为公认的格式:-
UPDATE mytable SET datestring = substr(datestring,7,4)||'-'||substr(datestring,1,2)||'-'||substr(datestring,4,2);
此后可能是您的原始查询
SELECT * FROM mytable WHERE datestring <= date('now');