datetime列的SQL Synatax错误

时间:2017-02-26 22:11:53

标签: sql sqlite

历史结构是

CREATE TABLE 'history' 
         ( 
                      'id'     INTEGER PRIMARY KEY autoincrement NOT NULL, 
                      'symbol' INTEGER NOT NULL, 
                      'shares' INTEGER NOT NULL, 
                      'price' text NOT NULL, 
                      'transaction' datetime NOT NULL, 
                      'user_id'     INTEGER NOT NULL 
         )

insert sql语句失败:

INSERT INTO history 
        (symbol, 
         shares, 
         price, 
         transaction, 
         user_id) 
VALUES   ('MSFT', 
         10, 
         25, 
         '2017-02-26 21:50:10', 
         3) 

无法解决问题。请帮忙。

1 个答案:

答案 0 :(得分:1)

transactionreserved word,因此当您想将其用作列名时,应该加倍引用它:

INSERT INTO history
(symbol, shares, price, "transaction", user_id) ...
                        ^           ^

最好是为列使用不同的名称,这样您就不必担心引用内容了。

此外,在SQL中,双引号用于标识符,单引号用于字符串文字,因此您应养成在create table中使用双引号的习惯。 SQLite会让你逃避很多事情,但良好的习惯(如正确引用)比坏习惯更好(例如依赖SQLite对SQL的粗略解释)。