SQLite current_timestamp 函数

SQLite current_timestamp 函数可以返回格式为 YYYY-MM-DD HH:MM:SS 的 UTC 当前日期和时间

默认时间戳

Rails快速起步 中,使用Rails的models对象创建的 tweets 默认就添加了 created_atupdated_at 字段,而且当使用Rails的model对象操作时,无需手工指定时间戳就能够自动添加当前时间。

但是,需要注意到,如果同样使用 sqlite3 交互命令插入数据库记录,则 created_atupdated_at 是需要人为提供时间戳的,否则会提示错误:

在数据库表插入数据时没有提供 created_atupdated_at
insert into tweets(title,body) values("Love Rails","I love Rails, because I love program");

此时报错:

在数据库表插入数据时没有提供 created_atupdated_at 报错信息
Error: NOT NULL constraint failed: tweets.created_at

此时解决方法是使用 CURRENT_TIMESTAMP :

插入时提供当前时间戳
insert into tweets(title,body,created_at,updated_at) values("Love Rails","I love Rails, because I love program",CURRENT_TIMESTAMP,CURRENT_TIMESTAMP);

数据库表默认时间戳

要避免手工插入 CURRENT_TIMESTAMP ,可以修订数据库表,增加默认时间戳为 CURRENT_TIMESTAMP

备注

怎么修订列添加默认值?等我再学习一下 SQL

一个案例:

创建表的时间字段可以添加默认current_timestamp
CREATE TABLE notes(
    id INTEGER PRIMARY KEY,
    note TEXT NOT NULL,
    created_at TEXT NOT NULL DEFAULT current_timestamp,
    updated_at TEXT NOT NULL DEFAULT current_timestamp
);

参考