SQLite3获得本地时间

本文介绍了一种在数据库查询中获取当前本地时间的方法,并指出直接使用datetime(), date(), time()等函数会得到UTC时间。

select datetime(CURRENT_TIMESTAMP,'localtime');


直接使用datetime() date() time()返回的是UTC时间

### 存储和操作时间日期格式 SQLite 支持多种方式来存储时间和日期数据。虽然 SQLite 中并没有专门的时间戳类型,但是可以通过 TEXT、REAL 或 INTEGER 类型来表示日期和时间。 #### 使用 TEXT 类型 TEXT 类型可以用来保存 ISO8601 文本格式的字符串,即 "YYYY-MM-DD HH:MM:SS.SSS"[^3]。这种格式易于阅读,并且可以直接比较大小。 ```sql CREATE TABLE events ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, event_date TEXT -- 'YYYY-MM-DD' ); INSERT INTO events (name, event_date) VALUES ('Event Name', datetime('now')); ``` #### 使用 REAL 类型 REAL 类型会把日期作为 Julian 日数(自公元前4713年1月1日以来经过的日数)进行存储。这种方式适合做算术运算,但不如文本形式直观。 #### 使用 INTEGER 类型 INTEGER 类型则通常用于保存 Unix 时间戳——自 UTC 时间 1970 年 1 月 1 日零点起所经历的秒数或毫秒数。这种方法对于计算两个时刻之间的时间差非常方便。 为了简化这些类型的转换工作,SQLite 提供了一系列内置函数来进行日期和时间的操作: - `datetime()` 函数返回当前本地时间为 YYYY-MM-DD HH:MM:SS 格式的字符串; - `date()` 返回当前日期为 YYYY-MM-DD 的字符串; - `time()` 返回当前时间为 HH:MM:SS 的字符串; - 可以通过传递参数给上述任何一个函数来自定义输出格式或者指定其他特定的时间点; 例如查询表内所有事件并按发生顺序排列: ```sql SELECT * FROM events ORDER BY datetime(event_date); ``` 当需要执行更复杂的日期运算时,还可以利用 `strftime` 函数提取部分信息或将不同格式的数据相互转化。比如获取某一天的具体星期几可以用如下语句实现: ```sql SELECT strftime('%w', '2023-04-05') AS day_of_week; /* 结果将是'3'(周三)*/ ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值