SQLite 常用 SQL 特别是时间函数

SQLite SQL调优指南及高级SQL技巧 本指南详细探讨了 SQLite 数据库在 SQL 优化和高级查询中的技术和技巧,包括索引使用、查询优化、表结构设计、事务优化等方面内容。这些技术不仅能提升数据库性能,还能为开发者提供清晰的优化思路,帮助构建高效稳定的数据库系统。 阅读详情

文章来自:

http://www.cnblogs.com/beginor/archive/2012/05/03/2480775.html


SQLite 常用 SQL

主键自增

创建表时将主键列设置为 INTEGER PRIMARY KEY , 例如:

?
1
2
3
4
CREATE  TABLE  [Test] (
   [Id] INTEGER  PRIMARY  KEY ,
   [ Name ] NVARCHAR(20) NOT  NULL
);

最后插入的行号

查看最后插入的行号是用 last_insert_rowid() 函数, 与 SQL Server 的 @@Identity 类似,例如:

?
1
2
3
4
INSERT  INTO  [Test] ( Name )
VALUES  ( 'Test' )
 
SELECT  LAST_INSERT_ROWID()

连接两个字符串

将两个字符串连接起来用 || , 例如:

?
1
2
INSERT  INTO  [Test] ( Name )
VALUES  ( 'Test_'  || CAST (LAST_INSERT_ROWID() AS  NVARCHAR(10)));

日期与时间

SQLite 支持下面 5 个日期与时间函数:

  • date(timestring, modifier, modifier, ...)
  • time(timestring, modifier, modifier, ...)
  • datetime(timestring, modifier, modifier, ...)
  • julianday(timestring, modifier, modifier, ...)
  • strftime(format, timestring, modifier, modifier, ...)

这 5 个函数都接受一个时间字符串作为参数, 紧跟着的是可选的修饰符。 strftime 函数还接受一个格式化字符串作为它的第一个参数。

这些时间日期函数使用 ISO-8601 规定的时间日期格式的子集, date 函数返回 YYYY-MM-DD 格式的日期, time 函数返回 HH:MM:SS 格式的时间, 而 datetime 则返回 "YYYY-MM-DD HH:MM:SS" 格式的日期时间; julianday 函数则返回自儒略日(公元前4713年1月1日)的天数; strftime 返回的格式则由其参数决定, 下面是 strftime 可以接受的参数格式:

  • %d    day of month: 00
  • %f    fractional seconds: SS.SSS
  • %H    hour: 00-24
  • %j    day of year: 001-366
  • %J    Julian day number
  • %m    month: 01-12
  • %M    minute: 00-59
  • %s    seconds since 1970-01-01
  • %S    seconds: 00-59
  • %w    day of week 0-6 with Sunday==0
  • %W    week of year: 00-53
  • %Y    year: 0000-9999
  • %%    %

所有的日期时间函数都可以用 strftime 函数表示, 提供这些函数的唯一原因是为了方便和高效, 例如:

date(...) strftime('%Y-%m-%d', ...)
time(...) strftime('%H:%M:%S', ...)
datetime(...) strftime('%Y-%m-%d %H:%M:%S', ...)
julianday(...) strftime('%J', ...)
可接受的时间字符串
  1. YYYY-MM-DD
  2. YYYY-MM-DD HH:MM
  3. YYYY-MM-DD HH:MM:SS
  4. YYYY-MM-DD HH:MM:SS.SSS
  5. YYYY-MM-DDTHH:MM
  6. YYYY-MM-DDTHH:MM:SS
  7. YYYY-MM-DDTHH:MM:SS.SSS
  8. HH:MM
  9. HH:MM:SS
  10. HH:MM:SS.SSS
  11. now
  12. DDDDDDDDDD

在第 5 至第 7 个格式中, "T" 是 ISO-8601 规定的日期时间分隔符; 第 8 至 第 10 个格式中只声明了时间, 其对应的日期为 2000-01-01 ; 第 11 个格式 ‘now’ 表示从系统获取的当前 UTC 时间; 第 12 个格式则表示从儒略日起的日期数。

修饰符

时间字符串可以跟多个可选的修饰符来对时间进行调整, 每个修饰符是对其左边时间值得一个转换, 从左到右依次应用, 顺序很重要。 可用的修饰符如下:

  1. NNN days
  2. NNN hours
  3. NNN minutes
  4. NNN.NNNN seconds
  5. NNN months
  6. NNN years
  7. start of month
  8. start of year
  9. start of day
  10. weekday N
  11. unixepoch
  12. localtime
  13. utc

前 6 个修饰符用于向时间字符串或修饰符指定的日期时间添加指定数量的时间。 注意 "±NNN months" 的工作方式是: 先将原来的日期渲染成 YYYY-MM-DD 格式, 对月份添加 ±NNN 的值, 然后再对结果进行修正。 如果 2001-03-31 添加了 '+1 month' 修饰符, 则应先得到 2001-04-31 , 由于 4 月只有 30 天, 所以结果会被修正为 2001-05-01 。 如果向闰年的 2 月 29 日添加了 '±N years' 修饰符, 当 N 不是 4 的倍数时, 也会发生这样的修正。

第 7 到 9 的那些 "start of" 修饰符将日期转换为当前日、 月、 年的开始时间。

修饰符 "weekday" 将日期向后推进直到下一周的指定天数。 星期天是 0 , 星期一是 1 , 依此类推。

第 11 个修饰符 "unixepoch" 只有在日期格式为 "DDDDDDDDDD" 时才有效, 将 unix 时间戳转换成时间, 由于参数是 64 位整数, 因此, 有效地时间范围是 0000-01-01 00:00:00 至 5352-11-01 10:52:47 (Unix 时间 -62167219200 至 10675199167)

修饰符 "localtime" 将 utc 时间转换为本地时间, "utc" 则相反。

示例

计算当前日期:

?
1
SELECT  date ( 'now' );

计算当前月的最后一天:

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

计算给定 unix 时间戳对应的日期时间:

?
1
SELECT  datetime(1092941466, 'unixepoch' );

计算给定 unix 时间戳对应的日期时间并转换成本地时间:

?
1
SELECT  datetime(1092941466, 'unixepoch' , 'localtime' );

计算当前的 unix 时间戳:

?
1
SELECT  strftime( '%s' , 'now' );

计算从美国独立到现在的天数:

?
1
SELECT  julianday( 'now' ) - julianday( '1776-07-04' );

计算从2004年某个时刻到现在的秒数:

?
1
SELECT  strftime( '%s' , 'now' ) - strftime( '%s' , '2004-01-01 02:34:56' );

计算今年10月份的第一个星期三:

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

计算 unix 时间纪元到现在的秒数(与 strftime('%s','now') 类似, 包含小数部分):

?
1
SELECT  (julianday( 'now' ) - 2440587.5)*86400.0;
HH:MM:SS

精准掌控时间:SQLite日期与时间函数的终极实战指南 本文全面解析SQLite时间函数的使用技巧,从基础操作到高级应用,涵盖日期计算、时区转换、性能优化等核心内容。通过对比表格和代码示例,详细介绍了date()、time()、datetime()等核心函数的使用场景,以及strftime()的灵活格式化方法。特别针对时区处理、闰年闰秒等边界条件提供解决方案,并指出常见陷阱如跨月计算错误。文章还给出性能优化建议,包括索引使用和批量计算技巧,最后总结了时间处理的黄金法则。这些实战经验可帮助开发者规避90%的时间处理问题,提升数据库操作的准确性和效率。 阅读详情

相关推荐

【C语言数据库】Sqlite3基础介绍

Sqlite3基础介绍与代码案例。

Mopoke的博客 2727

SQLite 常用 SQL

主键自增 创建表时将主键列设置为 INTEGER PRIMARY KEY , 例如: CREATE TABLE [Test] ( [Id] INTEGER PRIMARY KEY, [Name] NVARCHAR(20) NOT NULL ); 最后插入的行号 查看最后插入的行号是用 last_insert_rowid() 函数, 与 SQL Server 的 @@...

weixin_34019144的博客 143

SQLite常用命令

【代码】【无标题】

一如既往 3137

SQLite 数据库 时间函数及示例

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

JH_ZHAO的专栏 3162

SQLite数据库SQL语法详解与应用实践

SQLite,一种轻量级的数据库管理系统,其突出的嵌入式特性让它被广泛应用于各类应用程序中。自2000年发布第一个版本以来,SQLite经历了多个版本的更新迭代,持续改进和增强功能。它的主要特性包括无需单独的服务器进程,轻量级、跨平台、易于配置,以及零配置的特性,使其非常适合小型项目或资源受限的环境。SQLite的使用不需要复杂的安装和配置,它将数据库存储为单一的文件,使得数据库的备份和传输变得异常简单。它支持标准的SQL语言,提供了丰富的查询和数据操作能力。

weixin_36288992的博客 1062

HSmartWindowControl vs HWindowControl:Halcon老鸟教你如何根据项目需求选对控件(附性能对比)

本文深度对比Halcon图像处理中的HSmartWindowControl与HWindowControl控件,从性能、内存占用和交互体验等维度提供选型建议。HSmartWindowControl在硬件加速渲染、智能内存管理方面表现优异,特别适合医疗影像和工业检测等高性能需求场景,而HWindowControl则更适合兼容旧系统和资源受限环境。

weixin_30765505的博客 471

sqlite 数据库 时间函数及示例

今天遇到了 rom项目上的记事本中的代码中 sqllite的日期函数操作。以前还真的没有特别注意过这个东西。所以就查了下资料,来记录下支持的数据类型 : NULL、 INTEGER、 REAL、 TEXT、 BLOB, smallint 16 位元的整数。 interger 32 位元的整数。 decimal(p,s)

4972

【开关】刀开关矩阵(Pole Switched Matrix)的结构讨论

矩阵主要有交叉点矩阵和树形矩阵两种矩阵结构。 交叉点矩阵是由SPST继电器排列成简单的网格形式的阵列组成;树形矩阵是由树形的多路复用模块组成,为需要高频RF带宽的应用提供解决方案。在搭建这些矩阵的同时,也限制了可提供的连接性。这也是为什么有的矩阵是简单的交叉点矩阵,而有的矩阵的交叉点中嵌入隔离继电器用来提供中间带宽的矩阵。 但是,Pickering Interfaces提供的另外一种矩阵类型其...

Tina的博客 4407

sql语句-日期时间函数

date(日期时间字符串,修正符,修正符.....) time(日期时间字符串,修正符,修正符.....) datetime (日期时间字符串,修正符,修正符.....) julianday (日期时间字符串,修正符,修正符.....) strftime (日期时间格式,日期时间字符串,修正符,修正符.....) 这5个函数需要一个日期时间字符串做参数,修正符可以从零到多个,最后strf

DY_blog的专栏 995

(10)Proteus 8.9上的STM32仿真系列(HAL)---freertos

实验设计:通过cubemxide生成freertos工程,然后创建一个 pc13 led灯间隔200ms闪烁的任务。非常遗憾的是proteus8.9仿真失败,实物上没有问题,但还是把流程过一遍。 一、原理图 实物是淘宝上stm32f103 c8t6的核心板,proteus上没有这个芯片,这里图上大概表示一下,用的是核心板自带的pc13引脚的led灯。 二、cubemxide配置 1.RCC如之前工程一样配置 2、配置SYS timebase Source不要使用systick,自己选择一个定时器,我这

qq_35442550的博客 7344

ADS电路仿真方法综述:原理与应用

在射频与微波电路设计中,精确的仿真技术是验证性能的关键。ADS(Advanced Design System)作为行业标准工具,集成了多种仿真方法,适用于不同场景。本文将系统解析瞬态分析、谐波平衡(HB)、交流分析(AC)、直流分析(DC)、S参数、大信号SP(LSSP)及包络分析的原理、实现机制与应用场景。

u014344410的博客 481

SQLite julianday DateTime日期时区问题小记录

最近在忙微博粉丝精灵,特忙,没什么时间写博文了,今天偷偷的简单写点几行吧。   对于MSSQL中常见的DateDiff函数取两个日期间的天数差,在SQLite 中,有一个函数julianday,可以替换使用。   用法就是:julianday(datetime())-julianday(CreateTime) --CreateTime 是列名。   一直以来,都习惯性这么用,今天有点需...

weixin_34306676的博客 378

10分钟搞定小红书爆款笔记爬取!Selenium模拟登录+数据解析全流程,新手也能落地

小红书爬虫实战的核心,是**“模拟真人操作+解析结构化数据”**——Selenium解决了动态页面和登录的问题,lxml解决了数据提取的问题,pandas解决了数据存储的问题。新手学爬虫不用一开始就啃复杂的反爬机制,先从这类“可见即可爬”的场景入手,掌握“模拟操作→数据解析→数据保存”的全流程,再逐步叠加异常处理、批量爬取、反爬应对等功能。需要注意的是:爬取数据仅用于个人学习和研究,不得用于商业用途,且需遵守小红书的用户协议,不要过度爬取导致服务器压力。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1729

深入理解SQLite3之sqlite3_exec及回调函数

sqlite3的C/C++接口API主要有3个重要函数,分别为 1、sqlite3_open(const char* filename, sqlite3 **ppDb); 2、int sqlite3_exec( sqlite3*, /* An open database */ const ch...

猪哥的专栏 4万+

作为一名爬虫人如何实现千万级数据爬取?

爬虫门槛不高,高就高在往后余生的每一次实操都随时会让你崩溃!Bro

吴秋霖的博客 1万+

1.2 博图TIA的轨迹(Trace)功能介绍

在TIA中“轨迹” ( Traces ) 能来记录设备变量并对记录进行评估,对有些故障排查很有帮助,本文进行介绍

qq_34047402的博客 1649

SQLite 常用函数

SQLite常用函数速查表为开发者提供了关键功能的快速参考,涵盖日期时间、字符串处理、数学运算、条件判断等核心操作。重点包括:新加坡时区时间处理函数、字符串截取/替换/格式化、聚合计算、NULL值处理、JSON操作等实用功能。特别提供了针对SG时区的最佳实践,如本地时间插入查询、日期范围计算等场景模板,并包含性能优化建议(如避免函数包装索引列)。该表通过简明示例展示各函数用法,方便开发者在数据分析、日志处理等场景快速调用。

m0_57545130的博客 423

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

SQLite3介绍与常用语句汇总

本文介绍了下SQLite3 是什么以及基本的指令

jjkkzzzz的博客 4268

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Unity接入SQLite (二):SQL常用命令

介绍了如何在Unity中接入SQLite插件,以及一些常用的SQL命令

qq_27678295的博客 2545

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

数据库(SQLITE3函数总结): sqlite3_open, sqlite3_exec, slite3_close,sqlite3_prepare_v2,sqlite3_column_text,

数据库(SQLITE3函数总结): sqlite3_open, sqlite3_exec, slite3_close,sqlite3_prepare_v2,sqlite3_column_text....

岽少的专栏 8174

【Linux】特别篇--sqlite3数据库的使用

特别篇--sqlite3数据库的使用一、数据库基本概念(了解)二、基于嵌入式的数据库(了解)三、SQLite 基础(了解)四、创建数据库1、sqlite3数据库的安装2、sqlite3数据库的使用五、数据库常用命令介绍六、SQLite编程接口 一、数据库基本概念(了解) 数据库基本概念 数据(Data) 能够输入计算机并能被计算机程序识别和处理的信息集合。 数据库 (Database) 数据库是在数据库管理系统管理和控制之下,存放在存储介质上的数据集合 常用的数据库 大型数据库 Oracle公司是.

修成真的博客 4683

SQLite相关C接口函数

参考文章。

z398613041的博客 1089

Sqlite sql查询数据数据类型转换

一、SQL数据类型转换代码 SELECT CAST('3.02' as decimal) -- they aren't real decimals in sqlite, though. beware floats. 二、sqlite数据类型转换参考 Affinity oftype-name Conversion Processing 转换处理 NONE 没有 Casting a value to atype-namewith no aff...

qh0526wy的博客 9027

go-sqlite源码解析:深入理解纯Go SQLite驱动的实现原理

go-sqlite是一个纯Go实现的SQLite驱动,为Go语言开发者提供了轻量级、嵌入式的数据库解决方案。作为GitHub加速计划(gos)的一部分,这个驱动完全使用Go语言编写,无需依赖C语言库,让SQLite数据库的集成变得更加简单和安全。 ## 核心架构概览:驱动如何与Go标准库交互 go-sqlite驱动的核心实现在[sqlite.go](https://link.gitcode.c

gitblog_00116的博客 1161

sqlite3的常用命令和函数

http://blog.youkuaiyun.com/linchunhua/article/details/7184439 sqlite数据库只用一个文件就ok,小巧方便,所以是一个非常不错的嵌入式数据库,SQLite大量的被用于手机,PDA,MP3播放器以及机顶盒设备。     Mozilla Firefox使用SQLite作为数据库。     Mac计算机中的包含了多份SQLite的拷贝,用

Wen_dy的博客 915
上一篇: 华为手机 logcat 不出、不完全出日志解决方案
下一篇: tomcat使用log4j分割日志的配置方法
SoftwareEngineerLiu
博客等级 码龄18年 7粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值