SQLQuery查找指定范围内的日期

SQLQuery查找指定范围内的日期,sql,select,sqlite,Sql,Select,Sqlite,下面是我对SQLITE3DB的查询 SELECT tddate, CASE tdtype WHEN 'LOGIN' THEN MIN(tdtime) WHEN 'SHUTDOWN' THEN MAX(tdtime) ELSE NULL END AS tdtime, tdtype, tdusername FROM TimeData WHERE tdusername LIKE 'joe.shmoe' AND tddivision = 'divisionA' AND tdda

下面是我对SQLITE3DB的查询

SELECT tddate, 
CASE tdtype 
  WHEN 'LOGIN' THEN MIN(tdtime) 
  WHEN 'SHUTDOWN' THEN MAX(tdtime) 
  ELSE NULL
END AS tdtime, tdtype, tdusername 
FROM TimeData
WHERE tdusername LIKE 'joe.shmoe' 
AND tddivision = 'divisionA' 
AND tddate > '6/1/2011' 
AND tddate < '7/5/2011' 
GROUP BY tddate, tdtype, tdusername 
ORDER BY tddate, tdtime DESC

SQLite没有真正的“日期”数据类型,并且对日期字符串的格式非常挑剔。尝试以以下格式指定日期:
YYYY-MM-DD
。有关更多详细信息,请参阅文档。

让我猜猜。。。。tdtime是一个字符串而不是一个日期?表的DDL表明tdtime是CHAR(8)。tdDate是CHAR(10)。这不是日期,所以不能正确排序。@Cocoa-Dev:从未说过这不可能。刚才说您必须将日期正确格式化为
YYYY-MM-DD
。也尝试了一下,得到了0行数据。从时间数据中选择*,其中tddate>'2011-06-01'和tddate<'2011-07-05'按tddate订购DESC@CocoaDev:
tddate
列中的现有数据是否格式正确?当我运行时,从TimeData选择tddate;我看到日期格式为2011年7月1日、6月30日/2011@Cocoa戴夫:那你就有答案了。日期字符串的格式不正确,无法支持比较操作。
SELECT * 
FROM TimeData
WHERE tddate > '6/1/2011' 
AND tddate < '7/5/2011' 
ORDER BY tddate DESC
CREATE TABLE [TimeData] (
  [tdtag] CHAR(8), 
  [tdusername] CHAR(50), 
  [tddivision] CHAR(50), 
  [tddate] CHAR(10), 
  [tdtime] CHAR(8), 
  [tdipaddress] CHAR(14), 
  [tdtype] CHAR(8));