Sqlite3日期不排序ios

时间:2014-01-20 05:45:52

标签: ios iphone objective-c sorting sqlite

我正在使用sqlite数据库创建应用程序,我有表事件

CREATE TABLE "Events" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , "Date" DATETIME, "Title" TEXT, "ImgUrl" TEXT)

我将日期视为 DATETIME ,我希望表格数据按日期排序,但它没有给我分类数据,

我在SQLITE MANAGER中尝试过,但是这里也没有显示正确排序的数据。

enter image description here

修改 在Sqlite管理器中排序单击日期列。仍未获得排序数据。 enter image description here

enter image description here

3 个答案:

答案 0 :(得分:1)

看起来您的查询按字典顺序排列Date列,就好像类型是文本一样。您可能更喜欢整体类型。您的选择包括:

  

1。1日期和时间数据类型

     

SQLite没有为存储日期留出的存储类   和/或时间。相反,SQLite的内置日期和时间函数   能够将日期和时间存储为TEXT,REAL或INTEGER   值:

     

TEXT as ISO8601 strings(“YYYY-MM-DD HH:MM:SS.SSS”)。真如朱利安   日数,11月以来格林威治中午以来的天数   公元前24,4714根据公历格里高利历。整数   as Unix Time,自1970-01-01 00:00:00 UTC以来的秒数。   应用程序可以选择在任何这些中存储日期和时间   使用内置日期格式和格式之间自由转换   时间函数。

请参阅here

答案 1 :(得分:0)

SQLite没有DATETime类型,结果是因为它使用了varchar sort。

http://www.sqlite.org/datatype3.html

这是一个可行的解决方案https://stackoverflow.com/a/7161459/94962

答案 2 :(得分:0)

在这里你得到了一个排序结果,但它按月的日期没有按你的预期确定.SQLite排序日期格式为' YYYY-mm-dd',如果你如果日期不是' YYYY-mm-dd',请转换为此格式。 将您的查询修改为

SELECT * FROM Events ORDER BY(substr(Date,10,7)||' - ' || substr(Date,5,4)||' - ' || substr(Date,1,2));

希望这会对你有所帮助。