SQLite日期函数不会出现在SELECT结果中

时间:2016-01-20 07:59:03

标签: sqlite sorting date

我刚刚开始使用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命令。

任何人都可以解释它在做什么吗?

1 个答案:

答案 0 :(得分:3)

正如本网站至少已解释过百万次, SQLite没有日期/时间戳类型

因此,如果您想按日期排序,则必须将它们存储为以数字或字典顺序(asciibetically / unicodebetically)正确排序的格式。

recommended formatISO-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

  1. date函数需要ISO-8601格式。它不明白你给它的是什么,并返回NULL。完全期待。
  2. 按所有SELECT date(Survey_Date), Survey_Date FROM Surveys WHERE Loc_ID = 32 ORDER BY 1 ASC;值排序实际上无效。这些行意外排序。