SQLite DateTime与VARCHAR的比较

时间:2015-09-28 14:26:34

标签: wpf sqlite

我在SQLite DataTime过滤方面遇到了一些问题 我在我的wpf项目中使用了System.Data.SQLite 我可以使用以下sql查询进行过滤。

SELECT * FROM tblTest WHERE CAST(testDate As date) > CAST('28/09/2015' As date);

根据上面的sql,我得到的所有日期都大于28/09/2015。 btw testDate字段是我的sqlite表中的Varchar数据类型。

当我使用BETWEEN条款时,我什么都没得到。

SELECT * FROM tblTest WHERE CAST(testDate As date) BETWEEN CAST('28/09/2015' as date) AND CAST('10/10/2015' as date);

我应该如何过滤日期?

1 个答案:

答案 0 :(得分:3)

dd/mm/yyyy在SQLite中不是有效的TimeString 正确的格式为yyyy-mm-dd

据报道here, SQLite中的有效TimeStrings是:

  • 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
  • 现在
  • DDDDDDDDDD

并且您不需要转换为... date(这不是SQLite中的现有数据类型,它将回退到TEXT)。

关于SQLite数据类型的参考:https://www.sqlite.org/datatype3.html

另请注意,查询和命令末尾的分号(; )完全没用,因为SQLite不会连接SQL语句。

最后,您的查询应该是

SELECT * FROM tblTest WHERE testDate BETWEEN '2015-09-28' AND '2015-10-10'