2013-03-05 47 views
2

我在SQLite的以下DDL:SQLITE为了不工作

CREATE TABLE money (
    id INTEGER PRIMARY KEY, 
    'when' TIMESTAMP, 
    amount INTEGER, 
    note TEXT 
) ; 

我试图查看按日期排序行:

sqlite3 -line money.db "select * from money order by datetime('when') desc limit 5" 

但它不返回由命令行“当'以相反的顺序。同时将desc更改为asc的结果完全相同。也试过order by 'when'而不是order by datetime('when')。什么应该是正确的查询?谢谢!

+0

您是否在'when'列中有实际值的示例?看到这个答案,也许它解决你的问题:http://stackoverflow.com/questions/2930768/how-to-compare-sqlite-timestamp-values – mydoghasworms 2013-03-05 09:57:56

+0

在我的sqlite日期存储在'星期五2018年2月23日18:10:05 GMT + 0530(印度标准时间)'这种格式。我试着用'datetime(date)DESC'命令。但它不起作用。 – 2018-02-03 08:42:04

回答

4

在SQL中,字符串使用单引号,而表/列名可以用双引号引起来。

SQLite接受两种与MySQL兼容的引号,但只有当意图的含义不明确时,它才起作用。 在函数调用datetime('when')中,when被解释为一个字符串。使用datetime("when")

+0

谢谢!它工作! SQLite是非常挑剔:) – user28490 2013-03-05 10:33:32

+2

它不挑剔*足够*;它应该在您尝试在表格定义中使用'when'时抱怨。 ☺ – 2013-03-05 10:44:58

+1

并且相反:如果没有称为“foo”的列,那么''foo''将被视为''foo''。 – 2013-10-09 09:25:02