SQLite 数据库 时间函数及示例

SQLite 数据库 时间函数及示例&日期时间、字符串、时间戳互相转换

SQLite 数据库 时间函数及示例&日期时间、字符串、时间戳互相转换

'now' 在sqlite中代表当前日期时间

转换为字符串

SELECT date('now') as now;
>> 2022-03-18

# 这个是格林时间
SELECT time('now') as now;
>> 2022-03-18  

SELECT datetime('now') as now;
>> 2022-03-18 03:39:29

SELECT strftime('%Y-%m-%d %H:%M:%S', 'now') as now;
>> 2022-03-18 03:39:29

# 本地时间(北京时间)
select time('now','localtime') as now;
>>> 11:41:49

SELECT DATETIME ('now','+8 hour'); 
>>> 11:41:49

SELECT datetime('now','localtime') as now;
>>> 2022-03-18 11:41:49

SELECT strftime('%Y-%m-%d %H:%M:%S', 'now','localtime') as now;
>>> 2022-03-18 11:42:15

转换为时间戳

select strftime('%s','now') as now;
>>> 1647575122

select strftime('%s','2022-03-18') as now;
>>> 1647561600

时间戳转时间、字符串

# 转换为本地时间 
select datetime(1647575122, 'unixepoch', 'localtime') as now;
>>> 2022-03-18 11:45:22

# 格林时间
select datetime(1647575122, 'unixepoch') as now;
>>> 2022-03-18 03:45:22

date

对年月进行加减操作

SELECT DATE('2022-03-18','+1 day','+1 year');

>>> 2023-03-19

datetime

对时间进行加减操作,如对2022-03-18 12:00:00 增加一个小时,减少20分钟

SELECT DATETIME ('2022-03-18 12:00:00','+1 hour','-20 minute');

>>> 2022-03-18 12:40:00

获取本年开始的的时间

SELECT DATETIME ('now','localtime','start of year');   

>>> 2022-01-01 00:00:00

获取指定时间的这个月的第一天

SELECT DATETIME ('now','+1 hour','-12 minute','start of month');

>>> 2022-03-01 00:00:00

获取当天开始时间

SELECT DATETIME ('now','localtime','start of day'); 

>>> 2022-03-18 00:00:00

获取当前月份最后一天

SELECT date('now','start of month','+1 month','-1 day') 

>>> 2022-03-31

计算两个不同时间之间相差多少秒

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

86400 代表一天24小时总共的秒数

SELECT julianday('now','localtime')*86400 - julianday('2001-09-11 08:00:00')*86400

>>> 647409640.661011

查询当前内的所有记录

SELECT *  from 表名
where execution_stime>= DATETIME ('now','start of day','+0 day') 
AND execution_stime< DATETIME ('now','start of day','+1 day')

查询指定天内所有的记录(day)

SELECT *  from 表名
where execution_stime>= DATETIME ('2022-03-16','start of day','+0 day') 
AND execution_stime< DATETIME ('2022-03-16','start of day','+1 day')

查询昨天所有记录(+day -day)

SELECT *  from 表名
where execution_stime>= DATETIME ('now','start of day','-1 day') 
AND execution_stime< DATETIME ('now','start of day','+0 day')

查询本周所有记录(weekday) -6天的第一个星期一 到 周天 0点

SELECT *  from 表名
where execution_stime>= DATETIME ('now','start of day','-6 day','weekday 1') 
AND execution_stime< DATETIME ('now','start of day','+1 day','weekday 1')

查询本月所有记录 start of month

SELECT *  from program
where execution_stime>= DATETIME ('now','start of month','+0 month','-0 day') 
AND execution_stime< DATETIME ('now','start of month','+1 month','0 day')

计算今年十月份第一个星期二的日期(month weekday)

SELECT date('now','start of year','+9 months','weekday 2');

>>> 2022-10-04

strftime() 函数

可以把YYYY-MM-DD HH:MM:SS格式的日期字符串转换成其它形式的字符串。

strftime语法是:(格式, 日期/时间, 修正符, 修正符, …)

它可以用以下的符号对日期和时间进行格式化:

  • %d 月份, 01-31

  • %f 小数形式的秒,SS.SSS

  • %H 小时, 00-23

  • %j 算出某一天是该年的第几天,001-366

  • %m 月份,00-12

  • %M 分钟, 00-59

  • %s 从1970年1月1日到现在的秒数

  • %S 秒, 00-59

  • %w 星期, 0-6 (0是星期天)

  • %W 算出某一天属于该年的第几周, 01-53

  • %Y 年, YYYY

  • %% 百分号

strftime()的用法举例如下:

SELECT strftime('%Y.%m.%d %H:%M:%S','now','localtime') as now;

>>> 2022.03.18 11:49:26

参考:

sqlite 数据库 时间函数及示例_空白的泡的博客-CSDN博客

https://bbs.csdn.net/topics/370058872

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值