我在SQLite中对timestamp
进行排序时遇到了一些小麻烦,我尝试了一切,但仍然无法得到正确的结果。
我有一个时间戳,我尝试对它进行排序,因此最新的将是第一个。
我已经尝试过以下代码:
db.each("SELECT values ORDER BY datetime(timestamp) DESC LIMIT 200");
db.each("SELECT values ORDER BY datetime('timestamp') DESC LIMIT 200");
db.each("SELECT values ORDER BY datetime("timestamp") DESC LIMIT 200");
db.each("SELECT values ORDER BY date(timestamp) DESC LIMIT 200");
db.each("SELECT values ORDER BY timestamp DESC LIMIT 200");
最后一个选项给了我一些最接近的结果,不幸的是它只是按时间排序时间戳,例如11月17日创建的行将被正确排序,11月18日创建的行将是#34;年龄较大"。
请参阅以下屏幕:
我的timestamp
格式如下所示:
Thu Nov 17 2016 11:47:56
这应该是非常微不足道的,即使我没有弄清楚出了什么问题。
修改
我生成timestamps
的函数如下所示:
var timestamp = new Date().toString().replace(' GMT+0100 (CET)', '');
答案 0 :(得分:2)
字符串'Thu Nov 17 2016 11:47:56'
不是有效的日期时间字符串。在许多国家'Thu'
和'Nov'
甚至都没有意义。
db.each("SELECT values ORDER BY timestamp DESC LIMIT 200");
你正在排序字符串。 'Thu'
在'Fri'
之后出现,因为'T'
位于aplhabet中'F'
之后,因此您会在星期五之前的星期四到达时将数据降序排序。
使用有效的SQLite日期时间格式存储您的数据,例如'YYYY-MM-DD HH:MM:SS.SSS'
。然后,您可以使用ORDER BY timestamp DESC
轻松排序。