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