如何在sqlite3中创建具有默认值的datetime列?

时间:2010-04-10 18:39:32

标签: sqlite

有没有办法在sqlite3中创建一个具有默认为'now'的日期时间列的表?

以下语句返回语法错误:

create table tbl1(id int primary key, dt datetime default datetime('now'));

更新:这是Sky Sanders提供的正确ddl:

create table tbl1(id int primary key, dt datetime default current_timestamp);

4 个答案:

答案 0 :(得分:77)

试试这个:

create table tbl1(id int primary key, dt datetime default current_timestamp);

背景:

  

DEFAULT约束指定了一个   这样做时使用的默认值   插入。该值可以是NULL,a   字符串常量,数字或a   括号中的常量表达式   括弧。默认值可以   也是特别之一   与案例无关的关键词   CURRENT_TIME,CURRENT_DATE或   CURRENT_TIMESTAMP。如果值是   NULL,字符串常量或数字,它   每当插入列时   没有的INSERT语句   指定列的值是   执行。如果值是   CURRENT_TIME,CURRENT_DATE或   CURRENT_TIMESTAMP,然后是当前的   插入UTC日期和/或时间   列。对于CURRENT_TIME,   格式为HH:MM:SS。对于CURRENT_DATE,   YYYY-MM-DD。格式为   CURRENT_TIMESTAMP是“YYYY-MM-DD   HH:MM:SS”

来自http://www.sqlite.org/lang_createtable.html

答案 1 :(得分:14)

... default (datetime(current_timestamp))

default后面的表达式必须在括号中。如果您想使用SQLite date and time functions or modifiers执行日期算术,此表单非常有用。

答案 2 :(得分:6)

CURRENT_TIMESTAMP是一个文字值,就像'mystring'

一样

<强>列约束:

enter image description here

<强>字面值:

enter image description here

答案 3 :(得分:-3)

您可以使用以下查询在表格中使用当前日期值

create table tablename (date_field_name Created_on default CURRENT_DATE);