【SQLite】设置本地时间戳默认值

使用CURRENT_TIMESTAMP创建,发现在部分运行环境时间不符,考虑用datetime('now', 'localtime')创建语句

复制代码
CREATE TABLE logs (
  id INTEGER PRIMARY KEY,
  event TEXT,
  created_at TEXT DEFAULT CURRENT_TIMESTAMP -- 或 datetime('now', 'localtime')
);

在 SQLite 中,你可以使用 datetime('now', 'localtime') 来获取本地时间并将其设置为默认值。以下是如何编写你的 CREATE TABLE 语句:

sql 复制代码
CREATE TABLE logs (
  id INTEGER PRIMARY KEY,
  event TEXT,
  created_at TEXT DEFAULT (datetime('now', 'localtime'))
);

关键点说明:

  1. datetime('now', 'localtime')

    • datetime('now', 'localtime') 会生成当前系统的本地时间(考虑时区)。
    • 这与 CURRENT_TIMESTAMP 的行为不同,后者是基于 UTC 时间。
  2. 括号的使用

    • 在定义字段的默认值时,datetime('now', 'localtime') 需要被括号包围,即 DEFAULT (datetime('now', 'localtime')),以确保正确解释表达式。

示例:

假设当前本地时间为 2024-10-11 14:30:00,当你插入一条记录到表中时,created_at 字段会自动填充为该时间。

插入数据测试:

sql 复制代码
INSERT INTO logs (event) VALUES ('Test event');

运行上面的命令后,logs 表中会有一条记录:

sql 复制代码
SELECT * FROM logs;

结果可能是:

复制代码
id | event      | created_at
---+------------+-------------------
1  | Test event | 2024-10-11 14:30:00

通过这种方式,created_at 字段会自动记录插入记录的本地时间。

相关推荐
阿俊仔(摸鱼版)34 分钟前
CentOS上搭建 Python 运行环境并使用第三方库
linux·python·centos
遇见火星1 小时前
Linux 下使用tcpdump进行网络分析原
linux·网络·tcpdump
Yvonne9782 小时前
MySQL进阶(二)
数据库·mysql
189228048612 小时前
NV203NV207SSD固态闪存NV208NV213
网络·数据库·oracle
张彦峰ZYF2 小时前
如何封装一个线程安全、可复用的 HBase 查询模板
数据库·安全·hbase
学也不会2 小时前
202553-sql
数据库·sql
荒--2 小时前
Linux中安装mysql8,转载及注意事项
linux·运维·adb
yangmf20403 小时前
如何防止 ES 被 Linux OOM Killer 杀掉
大数据·linux·elasticsearch·搜索引擎·全文检索
I_Scholar4 小时前
mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz的下载安装和使用
linux·mysql
ziqibit4 小时前
Linux安全清理删除目录bash脚本
linux·bash