我刚刚开始使用SQLite而不是SQL Server,而且它似乎不希望在日期执行ORDER BY, MAX() or MIN()
。
Survey_Date
列是一个文本字段,因此将其排序从1月到12月,而不是按年份排序。如果我在date(Survey_Date)
语句中包含SELECT
,它将按年sort
数据 - 但我无法覆盖DESC
排序,但实际上并不是显示日期。
SELECT Survey_Date FROM Surveys WHERE Loc_ID = 32 ORDER BY Survey_Date;
产生如下结果:
01/10/2009 01/20/2013 02/05/2010 ...
SELECT date(Survey_Date), Survey_Date FROM Surveys WHERE Loc_ID = 32 ORDER BY 1 ASC;
产生如下结果:
|01/20/2013 |02/05/2010 |01/10/2009 ...
现在可以正确地对日期进行排序,但它不会显示格式化的日期,也无法识别ASC
命令。
任何人都可以解释它在做什么吗?
答案 0 :(得分:3)
正如本网站至少已解释过百万次, SQLite没有日期/时间戳类型。
因此,如果您想按日期排序,则必须将它们存储为以数字或字典顺序(asciibetically / unicodebetically)正确排序的格式。
recommended format是ISO-8601,即yyyy-mm-dd(yyyy-mm-ddTHH:MM:SS,如果你也想要时间的话)。这就是SQLite也可以使用的utility functions。
其他可能的格式是数字,从某个特定点开始的秒数,例如Unix time或天数,例如(Modified) Julian day
alert(arguments[2]);
它们是字符串,所以这是正确排序的。
01/10/2009 01/20/2013 02/05/2010