当前位置:  开发笔记 > 前端 > 正文

我可以在sqlite3中创建一个默认值的datetime列吗?

如何解决《我可以在sqlite3中创建一个默认值的datetime列吗?》经验,为你挑选了3个好方法。

有没有办法在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);

Sky Sanders.. 80

试试这个:

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

背景:

DEFAULT约束指定执行INSERT时要使用的默认值.值可以是NULL,字符串常量,数字或括在括号中的常量表达式.默认值也可以是特殊情况独立关键字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> Sky Sanders..:

试试这个:

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

背景:

DEFAULT约束指定执行INSERT时要使用的默认值.值可以是NULL,字符串常量,数字或括在括号中的常量表达式.默认值也可以是特殊情况独立关键字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


请注意,`current_timestamp`精确到秒,如果你想要毫秒使用`default(STRFTIME('%Y-%m-%d%H:%M:%f','现在'))`.

2> Doug Currie..:
... default (datetime(current_timestamp))

以下表达式default必须在括号中.如果要使用SQLite日期和时间函数或修饰符执行日期算术,则此表单很有用.


啊,也许我应该使用一个更复杂的例子,比如默认(datetime('now','start of day'))
如果你想要本地时间,`DEFAULT(datetime('now','localtime'))`非常有用.

3> kev..:

CURRENT_TIMESTAMP 是一个字面值就像 'mystring'

列约束:

在此输入图像描述

字面值:

在此输入图像描述

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有