文档章节

SQLite 常用 SQL

华中湖北人才培训
 华中湖北人才培训
发布于 2014/04/13 11:30
字数 1166
阅读 132
收藏 8

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


© 著作权归作者所有

共有 人打赏支持
上一篇: json
华中湖北人才培训

华中湖北人才培训

粉丝 82
博文 258
码字总数 264030
作品 0
武汉
高级程序员
私信 提问
数据库访问之Sqlite的不同之处

在我的Winform开发框架中,底层的数据访问支持多种不同的数据库,在数据库访问的开发过程中,发现Sqlite多数情况下,操作都和SqlServer或者说是和标准Sql差不多的。当然,Sqlite本身也有一些...

长平狐
2012/08/22
90
0
数据库访问之Sqlite的不同之处

在我的Winform开发框架中,底层的数据访问支持多种不同的数据库,在数据库访问的开发过程中,发现Sqlite多数情况下,操作都和SqlServer或者说是和标准Sql差不多的。当然,Sqlite本身也有一些...

长平狐
2012/06/11
73
0
[转载]SQLite 创建、修改、删除表

、数据库定义语言 DDL 在关系型数据库中,数据库中的表 Table、视图 View、索引 Index、关系 Relationship 和触发器 Trigger 等等,构成了数据库的架构 Schema。 在 SQL 语句中,专门有一些语...

mutouzhang
2014/03/25
0
0
Android提高第八篇之SQLite分页读取

本文来自http://blog.csdn.net/hellogv/ ,引用必须注明出处! Android包含了常用于嵌入式系统的SQLite,免去了开发者自己移植安装的功夫。SQLite 支持多数 SQL92 标准,很多常用的SQL命令都...

晨曦之光
2012/03/14
1K
0
SQLite学习手册(命令行工具)

工欲善其事,必先利其器。学好SQLite的命令行工具,对于我们学习SQLite本身而言是非常非常有帮助的。最基本的一条就是,它让我们学习SQLite的过程更加轻松愉快。言归正传吧,在SQLite的官方下...

柠檬酷
2015/07/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Docker搭建代码质量检测平台-SonarQube(中文版)

Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检测代码质量。通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十几种编程语言...

Jacktanger
18分钟前
0
0
Windows / Linux / MacOS 设置代理上网的方法汇总

本文汇总了 Windows / Linux / MacOS 设置代理上网的各种方法,总结如下: 1、设置系统代理(Windows、Linux、MacOS) 2、设置代理插件(Chrome、Chromium、Firefox、Opera、QQ等浏览器) 3、...

sunboy2050
昨天
2
0
自定义 Maven 的 repositories

有时,应用中需要一些比较新的依赖,而这些依赖并没有正式发布,还是处于milestone或者是snapshot阶段,并不能从中央仓库或者镜像站上下载到。此时,就需要 自定义Maven的<repositories>。 ...

waylau
昨天
2
0
徒手写一个es6代码库

mkdir democd demonpm initnpm install -g babelnpm install -g babel-clinpm install --save-dev babel-preset-es2015-node5 在项目目录创建两个文件夹 functional-playground ......

lilugirl
昨天
3
0
linux定位应用问题的一些常用命令,特别针对内存和线程分析的dump命令

1.jps找出进程号,找到对应的进程号后面才好继续操作 2.linux查看进程详细信息 ps -ef | grep 进程ID 3. dump内存信息 Jmap -dump:format=b,file=YYMMddhhmm.dump pid 4.top查看cpu占用信息 ...

noob_chr
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部