幸运蛋蛋pc开奖
这篇文章主要介绍了SQLite3中的日期时间函数使用小结,同时介绍了一些SQLite数据库的基本知识,需要的朋友可以参考下



import sqlite3
conn = sqlite3.connect('/tmp/sqlite.db')
cur = conn.cursor()

接下嘛呢?建一张表吧。这里需要注意的是,SQLite不支持在创建表的同时创建索引,所以要分两步走,先创建表然后再创建索引
create_table_stmt = '''CREATE TABLE IF NOT EXISTS test_table (
 id INTEGER PRIMARY KEY AUTOINCREMENT,
 duration INTEGER,
 event_date TEXT,
 parameter TEXT );'''

create_index = 'CREATE INDEX IF NOT EXISTS idx_id ON test_table (id);'
cur.execute(create_table_stmt)
cur.execute(create_index)
conn.commit()

然后往里面插一点数据吧,SQLite只支持5种基本的数据类型


NULL. The value is a NULL value 
INTEGER. The value is a signed integer, stored in 1, 2, 3, 4, 6, or 8 bytes depending on the magnitude of the value
REAL. The value is a floating point value, stored as an 8-byte IEEE floating point number
TEXT. The value is a text string, stored using the database encoding (UTF-8, UTF-16BE or UTF-16LE)
BLOB. The value is a blob of data, stored exactly as it was input

问题来了,SQLite的时间和日期类型在哪里?原来SQLite可以把时间日期保存在一下几种数据类型里面


TEXT as ISO8601 strings ('YYYY-MM-DD HH:MM:SS.SSS').
REAL as Julian day numbers, the number of days since noon in Greenwich on November 24, 4714 B.C. according to the proleptic Gregorian calendar.
INTEGER as Unix Time, the number of seconds since 1970-01-01 00:00:00 UTC.

insert_stmt = 'insert into test_table values (?, ?, ?)'
record = (123, '2011-11-30 12:34:56', 'hello world')
cur.execute( insert_stmt, record )
conn.commit()


把日期保存为字符串以后,不能直接拿出来直接当日期用,在用之前要调用SQLite的date函数
例如找前一天存进去的数据:

SELECT
 id,
 duration,
 event_date,
 parameter
 FROM test_table
WHERE
 DATE(event_date) = DATE('now', '-1 day', 'localtime')
ORDER BY id, event_date

查看表结构 select * from sqlite_master
查看表信息 PRAGMA table_info (table_name)

SQLite中的时间日期函数

SQLite包含了如下时间/日期函数:


datetime() .......................产生日期和时间
date()........................... 产生日期
time()........................... 产生时间
strftime() .......................对以?#20808;?#20010;函数产生的日期和时间进行格式化

datetime()的用法是:datetime(日期/时间,修正符,修正符...)
date()和time()的语法与datetime()相同。

在时间/日期函数里可以使用如下格式的字符串作为参数:

YYYY-MM-DD
YYYY-MM-DD HH:MM
YYYY-MM-DD HH:MM:SS
HH:MM
HH:MM:SS
now # 其中now是产生现在的时间。

举例(写这个笔记的时间是2006年10月17日晚8点到10点,?#26412;?#26102;间):


select datetime('now');
结果:2006-10-17 12:55:54

select datetime('2006-10-17');
结果:2006-10-17 12:00:00

select datetime('2006-10-17 00:20:00', '+1 hour', '-12 minute');
结果:2006-10-17 01:08:00

select date('2006-10-17', '+1 day', '+1 year');
结果:2007-10-18

select datetime('now', 'start of year');
结果:2006-01-01 00:00:00

select datetime('now', 'start of month');
结果:2006-10-01 00:00:00

select datetime('now', 'start of day');
结果:2006-10-17 00:00:00

# 尽管第2个参数加上了10个小时,但是却被第3个参数 start of day 把时间归零到00:00:00
# 随后的第4个参数在00:00:00的基础上把时间增加了10个小时变成了10:00:00。
select datetime('now', '+10 hour', 'start of day', '+10 hour');
结果:2006-10-17 10:00:00

# 把格林威治时区转换成本地时区。
select datetime('now', 'localtime');
结果:2006-10-17 21:21:47

select datetime('now', '+8 hour');
结果:2006-10-17 21:24:45


strftime() 函数可以把YYYY-MM-DD HH:MM:SS格式的日期字符串转换成其它形式的字符串。
strftime() 的语法是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');

结果:2006/10/17 21:41:09

最新资讯
最新全球超算500强榜单:美蝉联冠军 中国数量增加

最新全球超算500强榜

新一期全球超级计算机500强榜单18日面世,美国超级计算
王贻芳:我相信科学的发展是无止境的

王贻芳:我相信科学的发

“科研探索过程中需要平衡创新和风险两方面的因素。一
彭博:蚂蚁金服考虑申请新加坡虚拟银?#20449;?#29031;

彭博:蚂蚁金服考虑申请

据彭博消息,蚂蚁金服考虑申请新加坡虚拟银?#20449;?#29031;。
看完恋爱领域的付费课,发现罗振宇净瞎忙乎了

看完恋爱领域的付费课

看了这些知识付费的服务商,回看这场奇葩说的辩论,不管你
带货网红分层?#21644;?#37096;翻车,腰?#32771;?#25345;,尾部自掏腰包

带货网红分层?#21644;?#37096;翻车

即便直播带货风生水起,?#38405;?#25513;网红主播们光鲜亮丽背后的
京东的三个故事:错位竞争、高速增长、提升利润

京东的三个故事:错位竞

文/Eastland2019年11月15日,京东(NASDAQ:JD)发布了Q3未经
最新文章
SQLite 入门教程一 基本控制台(终端)命令

SQLite 入门教程一 基

SQLite是一个自持的(self-contained)、无服务器的、零配
SQLite 入门教程三 好多约束 Constraints

SQLite 入门教程三 好

在上一篇随笔的结尾,我提到了约束,但是在那里我把它翻译
SQLite教程(九):在线备份

SQLite教程(九):在线备份

这篇文章主要介绍了SQLite教程(九):在线备份,本文?#27493;?#20102;
初识SQLITE3数据库

初识SQLITE3数据库

本文主要讲诉Sqlite数据库的一些基本概念以及SQLite的
SQLite教程(二):C/C++接口简介

SQLite教程(二):C/C++接

这篇文章主要介绍了SQLite教程(二):C/C++接口简介,本文讲
SQLite数据库管理系统-我所认识的数据库引擎

SQLite数据库管理系统

SQLite是一款轻?#32771;?#30340;、被设计用于嵌入式系统的关联式
幸运蛋蛋pc开奖 新疆11选5五走势图 北京11选5选号 陕西十一选五遗漏数据 双色球蓝球尾数遗漏 陕西福彩中奖助手 舟山飞鱼网上直播 全国体彩排列五走势图 山东十一选五中奖助手 北京pk10玩法 天津11选5开奖号结果查询