查询“从表中选择最大值(日期),其中日期< = somedate”不起作用

时间:2014-03-07 11:53:48

标签: sql sqlite

我正在查询SQLite数据库表,如下所示:

SELECT MAX(Date) from Intra360 WHERE Date <= "05/04/2013 00:00"

作为回报的正确记录应为47号,即04/04/2013 23:00

raw data

但是,此语句的执行返回不同的值:

SQL output

我承认我对SQL几乎一无所知,但结果很奇怪。我哪里错了?

注意“Intra360”是表格的名称,包含日期的字段称为“日期”

附加说明我需要的是与用户输入最接近的可用日期。它是一个Python程序进行一些分析但是当用户输入日期时不一定是真的,它们将存在于数据库中。所以我只是试图以一种方式重新选择它们,因为缺少记录,将加载要在分析中使用的数据的正确SQL语句不会因执行而失败。所以“05/04/2013 00:00”是用户输入,因此应该从2013年4月4日开始进行查询(而不是definetely 04/06/2013)。

1 个答案:

答案 0 :(得分:1)

对按字母顺序排列的字符串执行比较,而不是按时间顺序对日期时间戳进行比较。

以比较您想要的格式存储您的日期时间。例如,unix纪元时间戳和ISO 8601 yyyy-MM-dd'T'HH:mm:ss日期时间具有此属性。

如果无法影响数据的存储方式,可以使用substr()来破坏SQL中的时间戳。参见例如Sqlite convert string to date了解更多信息。