文档章节

SQLite 常用 SQL

postdep
 postdep
发布于 2014/04/13 11:30
字数 1166
阅读 131
收藏 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


© 著作权归作者所有

共有 人打赏支持
postdep

postdep

粉丝 80
博文 255
码字总数 261672
作品 0
武汉
高级程序员
SQLite学习手册(命令行工具)

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

柠檬酷
2015/07/14
0
0
[转载]SQLite 创建、修改、删除表

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

mutouzhang
2014/03/25
0
0
Android 小项目之--SQLite 使用法门

每个应用程序都要使用数据,Android应用程序也不例外,Android使用开源的、与操作系统无关的SQL数据库 --大名鼎鼎的SQLite。SQLite是一款轻量级数据库,它的设计目的是嵌入式,而且它占用的资...

mayi
2011/11/14
0
2
学习iPhone开发中 sqlite3的使用

由于我主要负责我们小组项目数据库模块的部分所以这几天都一直在研究在iphone中最为常用的一个简单数据库sqlite,自己也搜集很多资料,因此在这里总结一下这几天的学习成果: 1.Sqlite操作简明教...

慎道
2011/03/27
0
1
手机开发-如何查看android数据文件和数据库

在Android中可以使用Eclipse插件DDMS来查看,也可以使用Android工具包中的adb工具来查看。android项目中的sqlite数据库位于/data/data/项目包/databases中。 工具/原料 doc命令adb工具,ecl...

娶到笨笨
2014/03/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

JavaFX WebView概述,很强大,内置了类似Electron的功能

来自 Murali Billa JavaFX技术人员的主要成员 在本博客中,我们将了解JavaFX如何呈现网页及其主要的组件 - 即WebView JavaFX是: 用于创建和交付桌面应用程序的软件平台,以及可以在各种设备...

GuoMengyue
6分钟前
0
0
数据库监控系统小实现1

需求:通过java 去调取python 去目标数据库采集信息,然后插入到数据库,由前台UI显示出来,从而达到监控目的。 设计:通过java的Runtime.getRuntime().exec(args1)方法去调用python脚本,j...

hnairdb
9分钟前
0
0
spring boot logback-spring 配置 日志分文件

因为更规规范化,想将日志分文异常类型,分别存储起来,方便以后查询问题。 以下是 logback-spring.xml 配置: <?xml version="1.0" encoding="UTF-8"?><configuration scan="true"> ...

诺岚
10分钟前
0
0
OSChina 周三乱弹 —— 这下回去要被老婆挠死

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @andonny :分享Passenger的单曲《Let Her Go》 《The Importance of Being Idle》-Noel Gallagher/It's a Cover Up 手机党少年们想听歌,请使...

小小编辑
28分钟前
238
15
RedHat已更改其开源许可规则

对于编程圈外的人来说,软件许可证似乎并不重要,但是,在开源领域,开源许可是非常重要的。 因此,领先的Linux公司Red Hat宣布了一件大事,所有新的由Red Hat发起的使用GNU通用公共许可证(...

linuxCool
41分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部