SQLite ORDER BY timestamp 没有给出预期的结果
SQLite ORDER BY timestamp does not give expected results
我在 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 日创建的行将 "older"。
请看下面的画面:
我的 timestamp
格式如下所示:
Thu Nov 17 2016 11:47:56
这应该是很琐碎的事情,连我都没有弄清楚哪里出了问题。
编辑:
我生成 timestamps
的函数如下所示:
var timestamp = new Date().toString().replace(' GMT+0100 (CET)', '');
字符串 '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
.
轻松排序
我在 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 日创建的行将 "older"。
请看下面的画面:
我的 timestamp
格式如下所示:
Thu Nov 17 2016 11:47:56
这应该是很琐碎的事情,连我都没有弄清楚哪里出了问题。
编辑:
我生成 timestamps
的函数如下所示:
var timestamp = new Date().toString().replace(' GMT+0100 (CET)', '');
字符串 '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
.