当前位置: 首页 > news >正文

SQLite库笔记:日期和时间函数

1. 函数概述

SQLite支持7个日期和时间函数,如下:

1

date(time-value, modifier, modifier, ...)

返回YYYY-MM-DD格式的日期

2

time(time-value, modifier, modifier, ...)

返回HH:MM:SS格式的时间

3

datetime(time-value, modifier, modifier, ...)

返回YYYY-MM-DD HH:MM:SS格式的日期时间

4

julianday(time-value, modifier, modifier, ...)

返回从格林尼治时间的公元前 4714 年 11 月 24 日正午算起的天数

5

unixepoch(time-value, modifier, modifier, ...)

返回unix时间戳,即1970-01-01 00:00:00 UTC以来的秒数

6

strftime(format, time-value, modifier, modifier, ...)

返回format指定格式的日期时间

7

timediff(time-value A, time-value B)

返回一个字符串,该字符串描述为到达时间A而必须添加到B的时间量

其中strftime()的format格式字符串支持在标准 C 库的 strftime()函数中找到的最常见替换项,以及两个新的替换项,即 %f 和 %J。 以下是有效 strftime()替换的完整列表,截至SQLite版本 3.46.0 (2024-05-23)。SQLite 的早期版本可能不支持所有替换。如果未定义或不受支持看到替换,结果为 NULL。

%d

月份的第几天: 01-31

%e

月份的第几天,不带前导零: 1-31

%f

带小数部分的秒: SS.SSS

%F

ISO 8601日期: YYYY-MM-DD

%G

ISO 8601年份对应%V

%g

2位ISO 8601年份对应%V

%H

小时: 00-24

%I

12小时制的小时: 01-12

%j

年份的第几天: 001-366

%J

儒略历日(小数)

%k

不带前导零的小时: 0-24

%l

12小时制的小时,不带前导零: 1-12

%m

月份: 01-12

%M

分钟: 00-59

%p

取决于小时的"AM" 或"PM"

%P

取决于小时的"am" or "pm"

%R

ISO 8601时间: HH:MM

%s

1970-01-01以来的秒数

%S

秒: 00-59

%T

ISO 8601时间: HH:MM:SS

%U

年份的第几周(00-53)-第01周从第一个星期日开始

%u

一周的第几天(1-7),其中周一为第1天

%V

ISO 8601一年中第几个星期

%w

一周的第几天(0-6),其中周日为0

%W

一年的第几周 (00-53) – 第01周从第一个星期日开始

%Y

年份: 0000-9999

%%

%

strftime()比较灵活,其它日期和时间函数可以用strftime()表示:

函数

等同于strftime()

date(...)

strftime('%Y-%m-%d', ...)

time(...)

strftime('%H:%M:%S', ...)

datetime(...)

strftime('%Y-%m-%d %H:%M:%S', ...)

julianday(...)

strftime('%J', ...)

2. time-value时间字符串

上面列表的time-value时间字符串通常是一个字符串,可以使用下列格式:

YYYY-MM-DD
YYYY-MM-DD HH:MM
YYYY-MM-DD HH:MM:SS
YYYY-MM-DD HH:MM:SS.SSS
YYYY-MM-DDTHH:MM
YYYY-MM-DDTHH:MM:SS
YYYY-MM-DDTHH:MM:SS.SSS
HH:MM
HH:MM:SS
HH:MM:SS.SSS
now
DDDDDDDDDD

上述格式中标红的“T”是分隔的文字字符。倒数第二个格式字符串“now”,可转换为当前日期。

3. modifier修饰符

对于除 timediff()以外的所有日期/时间函数, time-value 参数后面可以跟零个或多个modifier修饰符,这些修饰符更改日期时间。每个修饰符都是应用于其左侧时间值的转换。注意,顺序很重要。可用的修饰符如下

  •     NNN days
  •     NNN hours
  •     NNN minutes
  •     NNN seconds
  •     NNN months
  •     NNN years
  •     ±HH:MM
  •     ±HH:MM:SS
  •     ±HH:MM:SS.SSS
  •     ±YYYY-MM-DD
  •     ±YYYY-MM-DD HH:MM
  •     ±YYYY-MM-DD HH:MM:SS
  •     ±YYYY-MM-DD HH:MM:SS.SSS
  •     ceiling
  •     floor
  •     start of month
  •     start of year
  •     start of day
  •     weekday N
  •     unixepoch
  •     julianday
  •     auto
  •     localtime
  •     utc
  •     subsec
  •     subsecond

4. 示例

计算当前日期:

sqlite> select date(); 
2024-08-09

计算unix时间戳的日期和时间、某日期时间的unix时间戳:

sqlite> select datetime(1092941466, 'unixepoch');
2004-08-19 18:51:06
sqlite> select unixepoch('2004-08-19 18:51:06');
1092941466

计算2024-01-01 12:00:00距离1970-01-01有多久:

sqlite> select timediff('2024-01-01 12:00:00', '1970-01-01');
+0054-00-00 12:00:00.000

计算当前日期时间(UTC)、本地时区的日期时间:

sqlite> select strftime('%F %T');
2024-08-09 13:57:04
sqlite> select strftime('%Y-%m-%d %H:%M:%S');
2024-08-09 13:57:04
sqlite> select strftime('%Y-%m-%d %H:%M:%S', 'now', 'localtime');
2024-08-09 21:57:04

 

注意:SQLite默认是UTC时间,获取当地时间可以加上'localtime'修饰符。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • docker构建时是否使用了代理测试
  • VMware Fusion 11.5安装
  • SpringBoot 框架学习笔记(八):异常处理 和 Servlet、Filter、Listener三大组件注入spring
  • 密码学基础:彩虹表技术
  • 实战项目:贪吃蛇游戏的实现(上)
  • 创建vscode debug环境
  • docker、防火墙关闭仍然无法访问、防火墙命令
  • 网络通信(基于UDP协议的Socket编程模型)
  • 全球海事航行通告解析辅助决策系统
  • 【概率统计】三扇门游戏(蒙提霍尔问题)
  • 重启人生计划-积蓄星火
  • keepalived高可用集群
  • 【Pytorch实用教程】Pytorch中加载数据推荐实用:Dataset类
  • 【C++语言】list的构造函数与迭代器
  • 使用flask遇到的问题及解决方法
  • Angular 4.x 动态创建组件
  • Apache Zeppelin在Apache Trafodion上的可视化
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • Kibana配置logstash,报表一体化
  • Redis字符串类型内部编码剖析
  • vue-router 实现分析
  • windows-nginx-https-本地配置
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 记录:CentOS7.2配置LNMP环境记录
  • 模型微调
  • 前端路由实现-history
  • 驱动程序原理
  • 如何选择开源的机器学习框架?
  • 软件开发学习的5大技巧,你知道吗?
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 在Docker Swarm上部署Apache Storm:第1部分
  • 做一名精致的JavaScripter 01:JavaScript简介
  • # .NET Framework中使用命名管道进行进程间通信
  • # Maven错误Error executing Maven
  • #Linux(make工具和makefile文件以及makefile语法)
  • (20050108)又读《平凡的世界》
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (二)换源+apt-get基础配置+搜狗拼音
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (译) 函数式 JS #1:简介
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • ***原理与防范
  • .NET C# 操作Neo4j图数据库
  • .NET COER+CONSUL微服务项目在CENTOS环境下的部署实践
  • .NET Core 和 .NET Framework 中的 MEF2
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)