在我的应用程序中,如果enrollDate小于或等于当前日期,我必须获取所有行的列表。
我的SQLite查询为
select * from master where enrollDate<='current date'
表中的注册日期为"07/21/2017"
,当前日期为"11/22/2017"
。
一切正常,如果当前日期是'30/09/2017'
,但是当前日期从"10/01/2017"
开始,我会得到行列表,然后列表返回0行,而后期日期也是。
请告诉我它为什么会发生以及如何解决它。
答案 0 :(得分:1)
您实际上在比较字符串,而不是日期。字符串按字典顺序比较。
要比较SQL中的日期,请考虑将其存储为字典和时间顺序相同的格式。例如,ISO 8601 UTC标记yyyy-MM-dd
或Java的long
纪元毫秒。
答案 1 :(得分:0)
SELECT * FROM master WHERE CAST(strftime('%s', enrollDate) AS integer) <=CAST(strftime('%s', currentDate) AS integer) ;