SQLite数据库 - 比较DateTime

时间:2013-10-11 19:27:27

标签: sqlite

我正在开发一个SQLite数据库,其中包含一个以yyyy-MM-dd HH:mm:ss格式存储值的列。现在我需要创建一个过滤器来选择带有filter的行作为这个datetime列。 查询:

Select * from tbl_locations where datetime >= '2013-09-11 00:00:00' and datetime <='2013-09-13 00:00:00'

上面的查询返回null set,尽管在这个插槽中包含了值(我使用没有过滤器的select语句进行了验证。)

有任何建议我如何获得所需的数据集?

2 个答案:

答案 0 :(得分:1)

也许SQLite文档中的摘录可以帮助您:

1。2日期和时间数据类型

SQLite没有预留用于存储日期和/或时间的存储类。相反,SQLite的内置日期和时间函数能够将日期和时间存储为TEXT,REAL或INTEGER值:

  • TEXT as ISO8601字符串(“YYYY-MM-DD HH:MM:SS.SSS”)。
  • 真实的朱利安日数,即公元前4714年11月24日格林威治中午以来的天数。根据预感格里高利历。
  • INTEGER as Unix Time,自1970-01-01 00:00:00 UTC以来的秒数。

应用程序可以选择以任何格式存储日期和时间,并使用内置的日期和时间函数在格式之间自由转换。

http://www.sqlite.org/lang_datefunc.html

中记录了您可以在SQL中用于构建查询的日期和时间函数。

答案 1 :(得分:0)

好的,我在MySQL中对此进行了测试,但希望它能够正常运行。我有一个使用timestamps的表,并将列更改为text类型。然后我尝试了以下SQL查询并得到了我通常会得到的相同结果(除了尾随小数)

SELECT  timestamp(stock_quote_timestamp) 
FROM    stock.stock_quote
WHERE   stock_quote_timestamp < timestamp('2013-10-07 11:05:30')#@high_date
AND     stock_quote_timestamp > timestamp('2013-10-03 14:09:03');#@low_date;

基本上,只需将text语句转换为timestamps即可正确比较。哦,你还需要说明你还有什么SELECT,或者你可以做一个复合选择语句:SELECT *, timestamp(stock_quote_timestamp)...