惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

有赞技术团队
有赞技术团队
AWS News Blog
AWS News Blog
P
Privacy & Cybersecurity Law Blog
Cyberwarzone
Cyberwarzone
Scott Helme
Scott Helme
G
GRAHAM CLULEY
NISL@THU
NISL@THU
K
Kaspersky official blog
Security Latest
Security Latest
L
LINUX DO - 热门话题
C
CERT Recently Published Vulnerability Notes
P
Palo Alto Networks Blog
Spread Privacy
Spread Privacy
Simon Willison's Weblog
Simon Willison's Weblog
A
Arctic Wolf
C
Cisco Blogs
C
CXSECURITY Database RSS Feed - CXSecurity.com
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Stack Overflow Blog
Stack Overflow Blog
MongoDB | Blog
MongoDB | Blog
T
Tor Project blog
T
Threat Research - Cisco Blogs
C
Cybersecurity and Infrastructure Security Agency CISA
I
InfoQ
P
Privacy International News Feed
Project Zero
Project Zero
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Martin Fowler
Martin Fowler
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
U
Unit 42
M
MIT News - Artificial intelligence
Latest news
Latest news
I
Intezer
MyScale Blog
MyScale Blog
Google DeepMind News
Google DeepMind News
罗磊的独立博客
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
月光博客
月光博客
The Last Watchdog
The Last Watchdog
Microsoft Security Blog
Microsoft Security Blog
美团技术团队
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
人人都是产品经理
人人都是产品经理
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
IT之家
IT之家
N
News | PayPal Newsroom
Google Online Security Blog
Google Online Security Blog
V
Vulnerabilities – Threatpost

博客园 - 张志敏

System.Net.Http for Silverlight 通过网页进行 iOS 应用内部分发 使用 Intel HAXM 为 Android 模拟器加速,媲美真机 Mono for Android 实现高效的导航 Activity 生命周期及其栈管理方式 我的第一个 Mono for Android 应用 谈谈 INotifyPropertyChanged 的实现 在 Silverlight 5 项目中使用 async/await Task 编程中的异常处理 NHibernate 关系映射中的 Formula 开源一个 Sliverlight 导航框架 让 VS 编译 MonoTouch 项目源文件不再出错 MonoTouch绑定CocoaTouch类库 升级 Xcode 4.3 后找不到 xcodebuild 的解决方法 iOS 静态类库项目的建立与使用 从源代码编译里程碑的 ICS ROM IIS 7.5 下应用程序池的预定义账户 Web API 依赖注入与扩展 ASP.NET Web API 简介
SQLite 常用 SQL
张志敏 · 2012-05-03 · via 博客园 - 张志敏

主键自增

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

CREATE TABLE [Test] (
  [Id] INTEGER PRIMARY KEY, 
  [Name] NVARCHAR(20) NOT NULL
);

最后插入的行号

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

INSERT INTO [Test] (Name)
VALUES ('Test')

SELECT LAST_INSERT_ROWID()

连接两个字符串

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

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" 则相反。

示例

计算当前日期:

SELECT date('now');

计算当前月的最后一天:

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

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

SELECT datetime(1092941466, 'unixepoch');

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

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

计算当前的 unix 时间戳:

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

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

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

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

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

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

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

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

SELECT (julianday('now') - 2440587.5)*86400.0;

HH:MM:SS