有没有办法在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);
答案 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”
。
答案 1 :(得分:14)
... default (datetime(current_timestamp))
default
后面的表达式必须在括号中。如果您想使用SQLite date and time functions or modifiers执行日期算术,此表单非常有用。
答案 2 :(得分:6)
CURRENT_TIMESTAMP
是一个文字值,就像'mystring'
<强>列约束:强>
<强>字面值:强>
答案 3 :(得分:-3)
您可以使用以下查询在表格中使用当前日期值
create table tablename (date_field_name Created_on default CURRENT_DATE);