我正在查询SQLite数据库表,如下所示:
SELECT MAX(Date) from Intra360 WHERE Date <= "05/04/2013 00:00"
作为回报的正确记录应为47号,即04/04/2013 23:00
:
但是,此语句的执行返回不同的值:
我承认我对SQL几乎一无所知,但结果很奇怪。我哪里错了?
注意“Intra360”是表格的名称,包含日期的字段称为“日期”
附加说明我需要的是与用户输入最接近的可用日期。它是一个Python程序进行一些分析但是当用户输入日期时不一定是真的,它们将存在于数据库中。所以我只是试图以一种方式重新选择它们,因为缺少记录,将加载要在分析中使用的数据的正确SQL语句不会因执行而失败。所以“05/04/2013 00:00”是用户输入,因此应该从2013年4月4日开始进行查询(而不是definetely 04/06/2013)。
答案 0 :(得分:1)
对按字母顺序排列的字符串执行比较,而不是按时间顺序对日期时间戳进行比较。
以比较您想要的格式存储您的日期时间。例如,unix纪元时间戳和ISO 8601 yyyy-MM-dd'T'HH:mm:ss
日期时间具有此属性。
如果无法影响数据的存储方式,可以使用substr()
来破坏SQL中的时间戳。参见例如Sqlite convert string to date了解更多信息。