SQLQuery查找指定范围内的日期
下面是我对SQLITE3DB的查询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
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));