2011-11-03 92 views
0

所以现在我使用这个查询:如何在sqlite中获得特定日期的行?

select * from items where mydate = "2009-11-28" 

而且由于我的日期存储为yyyy-mm-dd格式的文本,这应该通过各种手段返回一行匹配日期,对吧?如果不是,我做错了什么?

我试着这样做:

select * from items where releasedate between date("2009-11-28") and date("2009-11-29") 

它工作得很好,但总是有只是一天似乎并不权之间使用。

所以第二个查询工作正常,但第一个没有。有理由吗?我也试过把日期放在date(),但那也没用。

+0

你为什么在您的查询“之间”在这里使用?第一个查询没有工作你的情况或什么? – Hiral

+0

是的,第一个查询不返回我的行。而且我确实有这个日期。 – James

+0

你确定你的日期是'yyyy-mm-dd'格式,而不是'yyyy-mm-dd H:is'吗? –

回答

4

尝试此查询,

select * from items where mydate like '2009-11-28%' 
+1

这个工程!为什么? %做什么? – James

+0

如果你的数据库包含日期'2009-11-28 04:40'当你使用像'2009-11-28%'时,它会忽略其他字符(我的意思是'8'字符将被忽略' –

1

你的插入语句是什么样的,表的定义是什么样的?我敢打赌,你需要将第一个查询字符串的日期与'date'函数进行转换,而不是做一个原始字符串。

此外,如果您要转换实际日期,请确保其确切的“2009-11-28”。如果你做了一个通用的日期参数,你可能不是完全在午夜,而范围将是一个有效的查询方式,而不是一个固定的日期值。

0
select * from items where mydate = "2009-11-28" // Here do not use double quotation 

相反,试试这个

select * from items where mydate = '2009-11-28' 
相关问题