如何在sqlite3中创建具有默认值的datetime列?
有没有办法在sqlite3中创建一个表,该表的datetime列默认为“now” 以下语句返回语法错误:如何在sqlite3中创建具有默认值的datetime列?,sqlite,Sqlite,有没有办法在sqlite3中创建一个表,该表的datetime列默认为“now” 以下语句返回语法错误: create table tbl1(id int primary key, dt datetime default datetime('now')); 更新:以下是正确的ddl: 试试这个: create table tbl1(id int primary key, dt datetime default current_timestamp); 背景: 默认约束指定一个 执行操作时要使用
create table tbl1(id int primary key, dt datetime default datetime('now'));
更新:以下是正确的ddl:
试试这个:
create table tbl1(id int primary key, dt datetime default current_timestamp);
背景:
默认约束指定一个
执行操作时要使用的默认值
插入。该值可以为空,也可以为空
字符串常量、数字或数字
中包含的常量表达式
圆括号。默认值可能是
也是其中一个特别的
与大小写无关的关键字
当前时间、当前日期或
当前时间戳。如果值为
NULL,一个字符串常量或数字,它
在任何时候都会插入到列中
一种插入语句,它不包含
指定列的值
执行。如果值为
当前时间、当前日期或
当前时间戳,然后是当前
UTC日期和/或时间插入到
柱子。就当前时间而言
格式为HH:MM:SS。对于当前_日期,
YYYY-MM-DD.的格式
当前时间戳为“YYYY-MM-DD
HH:MM:SS”
从
default
后面的表达式必须在括号中。如果要使用执行日期算术,此表单非常有用。当前时间戳是一个与'mystring'类似的文本值。
列约束:
文字值:
您可以使用以下查询来使用表中的当前日期值
create table tablename (date_field_name Created_on default CURRENT_DATE);
Doug,parenth仅在涉及表达式时才是必需的。“current_xxxx”是关键字,用作文本值。天空,是的,这不是我说的吗?我的观点是,如果你想要的比关键字提供的更多,你可以使用表达式,但表达式必须在括号中;原始问题中的create语句缺少括号。没有理由写入datetime(当前时间戳)。只需使用current_timestamp.Ah,也许我应该使用更复杂的示例,例如default(datetime('now','start of day'))default(datetime('now','localtime'))
如果你想知道当地时间,它会很有用。@NobodyMan-也许你可以更新你的问题,并加入ddl,让其他人很容易找到。@Sky-我不反对,但这不会让你的答案变得多余吗?此外,如果我进行编辑,我应该替换不正确的代码段还是简单地用正确的答案附加到问题后面?我有点不懂礼仪:-)当你在问题中添加一个更新,并举例说明最终对你有效的方法时,这并不会减少答案。很多答案都是有帮助的建议,就像我的ddl片段和背景一样,它们帮助您修复ddl。通过添加正确的语句来确认解决方案是一种增值。在任何情况下都不会更改原始代码,这就是具有相同问题的人将如何找到此解决方案的方法。不管怎样,这是一个没有实际意义的问题,我编辑了我的答案,以展示您的ddl的工作版本。请注意,current\u timestamp
精确到秒,如果您想要毫秒,请使用default(STRFTIME(“%Y-%m-%d%H:%m:%f”,“NOW”)
。是的,datetime('NOW')
使用的OP是一个expr
,因此它需要括号。在主题之外,最初的问题是关于日期时间字段,而不是日期字段。
... default (datetime(current_timestamp))
create table tablename (date_field_name Created_on default CURRENT_DATE);