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
分类: RefferencesiOS

.Net Framework

使用 Task 简化异步编程
摘要: 本文介绍了常见的 .Net 异步编程模式, 以及如何用 Task 对象包装这些异步编程模式, 并给出了一个使用 Task 对象包装异步操作, 简化代码的例子。阅读全文

posted @ 2012-01-16 09:36 张志敏 阅读(3704) | 评论 (12) 编辑

在 MonoTouch 中使用 Newtonsoft.Json
摘要: 本文介绍如何在 MonoTouch 下编译 Newtonsoft.Json 。阅读全文

posted @ 2011-09-25 22:39 张志敏 阅读(915) | 评论 (0) 编辑

几款 .Net Reflector 的替代品
摘要: 介绍几款免费的 .Net Reflector 替代产品阅读全文

posted @ 2011-05-12 17:02 张志敏 阅读(6003) | 评论 (14) 编辑

使用 Castal DynamicProxy 简化 Silverlight 数据绑定
摘要: 使用 Castal DynamicProxy 简化 Silverlight 数据绑定, 不再需要设置属性时手工激发 NotifyPropertyChanged 事件。阅读全文

posted @ 2011-03-07 16:11 张志敏 阅读(1176) | 评论 (6) 编辑

NHibernate 架构浅析
摘要: NHibernate 架构浅析,以及需要掌握的要点阅读全文

posted @ 2011-02-11 15:48 张志敏 阅读(366) | 评论 (0) 编辑

Silverlight 异步任务队列实现
摘要: 众所周知, 在 Silverlight 运行时中, 不允许堵塞 UI 的操作出现, 很多操作只能通过异步实现。 但是, 在 Silverlight 的实际开发工作中, 经常出现需要将多个异步操作按照一定的顺序执行, 因而需要一个能够按照顺序执行异步任务的队列, 下面是一个简单的设计阅读全文

posted @ 2010-12-24 13:24 张志敏 阅读(2078) | 评论 (21) 编辑

使用 MonoDevelop 调试 Unity3D 的正确步骤
摘要: Unity3D 是一个基于 Mono 的跨平台游戏引擎,支持 PC 、MAC 、 Android 、IOS 等多种平台,其 3.0 以后的版本支持用 MonoDevelop 调试,很多人安装了之后发现 MonoDevelop 的调试按钮是灰色的,无法进行调试,通过看官方文档和测试,发现正确的调试步骤如下阅读全文

posted @ 2010-12-08 13:59 张志敏 阅读(1056) | 评论 (0) 编辑

Silverlight 异步单元测试
摘要: Silverlight 中的很多操作都是异步的,很多情况下要求单元测试也是异步的,但是介绍异步单元测试的文档很少。通过对 Silverlight Toolkit 中的 Microsoft.Silverlight.Testing 和 Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight 这两个文件的分析以及尝试,终于发现了做异步单元测试的方法阅读全文

posted @ 2010-03-07 14:50 张志敏 阅读(1708) | 评论 (3) 编辑

Silverlight 的导航框架与动态加载
摘要: 本文讨论 Silverlight 3 内置的导航框架与动态加载 xap 文件相结合时遇到的问题、原因、与解决方法。阅读全文

posted @ 2009-10-24 15:05 张志敏 阅读(3543) | 评论 (7) 编辑

OpenTK 入门系列
摘要: The Open Took Kit (OpenTK), 是对 OpenGL、OpanAL、OpenCL 的跨平台的封装,使用 C# 编写,可以运行在 Windows、 Linux 以及 MacOSX 平台上, 任何 .Net 语言都可以使用它做开发,本文提供了一系列入门的代码供有兴趣的朋友参考。阅读全文

posted @ 2009-10-17 13:32 张志敏 阅读(2871) | 评论 (8) 编辑

Silverlight 使用 ResourceDictionary 和 MergedDictionaries 时的注意问题
摘要: Silverlight 程序不可避免的要使用到 ResourceDictionary , 随着项目的变大, ResourceDictionary  也越来越大, 自然会想到将 ResourceDictionary  进行分组,做成 MergedDictionaries  ,在使用 ResourceDictionary 和 MergedDictionaries 时要注意以下问题阅读全文

posted @ 2009-10-14 10:47 张志敏 阅读(1256) | 评论 (1) 编辑

Silverlight中枚举并加载客户端程序集
摘要: Silverlight中枚举并加载客户端程序集的实现方式之一, 参考如下代码实现阅读全文

posted @ 2009-10-10 08:54 张志敏 阅读(343) | 评论 (0) 编辑

Silverlight反射的安全注意事项
摘要: 在 Silverlight 中,不能使用反射来访问私有类型和成员。如果某个类型或成员的访问级别使您无法在静态编译的代码中访问该类型或成员,则您无法使用反射来动态访问该类型或成员。阅读全文

posted @ 2009-10-10 08:46 张志敏 阅读(330) | 评论 (0) 编辑

log4net 中logger默认日志等级的设计意图详解
摘要: 详细介绍Log4net的各个日志等级的设计意图,使用log4net的话,可以参考一下。阅读全文

posted @ 2009-08-28 21:53 张志敏 阅读(354) | 评论 (0) 编辑

Silverlight版本的LoadMask
摘要: 使用 Silverlight 获取服务端数据时,只能使用异步调用,需要一定的时间,在这一段时间内,通常不希望用户进行其它操作,否则可能会干扰当前数据的加载。在 ExtJS 下, Ext.Element 的 mask 和 unmask 方法可以轻松的对任意的界面元素进行遮罩和取消遮罩,在遮罩的过程中,这个界面元素暂时不能被操作(当然, ExtJS 之下还有专门的 Ext.LoadMask 类),有兴趣的可以参考 ExtJS 相关的 API 。因此在Silverlight下,我们同样需要类似的 mask 和 unmask方法。阅读全文

posted @ 2009-06-02 22:20 张志敏 阅读(2133) | 评论 (3) 编辑

从源代码编译安装 Mono 2.4 和 MonoDevelop 2.0
摘要: Mono 2.4 提供了.Net 3.5 的大部分功能 (Linq、扩展方法),提供了完整的ASP.NET支持, Novell宣布开始提供商业支持,著名的控件提供商(Telerik)也开始支持Mono下的ASP.Net 控件,可以说现在Mono已经日臻完善,有一定的研究意义。阅读全文

posted @ 2009-05-09 17:43 张志敏 阅读(1508) | 评论 (6) 编辑

C# 中的 volatile 关键字
摘要: C#关键字 volatile 详解, 参考msdn文档。阅读全文

posted @ 2009-04-28 15:05 张志敏 阅读(1078) | 评论 (0) 编辑

Linq 中按照多个值进行分组(GroupBy)
摘要: 利用匿名类型 (Anonymous Type) ,实现Linq的按照多个值分组 (GroupBy) 。阅读全文

posted @ 2009-04-24 15:04 张志敏 阅读(2240) | 评论 (0) 编辑

使用log4net记录ibatis.net的SQL动态查询语句
摘要: 使用使用log4net记录ibatis.net的SQL动态查询语句的配置方法。阅读全文

posted @ 2009-03-23 17:05 张志敏 阅读(1148) | 评论 (4) 编辑

用SharpDevelop3调试ASP.NET的方法
摘要: 最近下载了SharpDevelop,感觉各方面都不错,唯一的缺憾是不能调试ASP.NET。经过几番搜索和试验,终于发现了用它调试ASP.NET的方法。阅读全文

posted @ 2008-09-21 11:41 张志敏 阅读(2350) | 评论 (4) 编辑

TFS 2008 中文版安装记录

posted @ 2008-05-13 21:47 张志敏 阅读(6986) | 评论 (19) 编辑

Visifire Silverlight Charts (基于SilverLight的Chart组件)

posted @ 2008-04-26 15:42 张志敏 阅读(2743) | 评论 (4) 编辑

在 IE 中使用 Windows 窗体控件

posted @ 2007-06-02 18:23 张志敏 阅读(2582) | 评论 (1) 编辑

介绍一下Seekafile Server

posted @ 2006-09-07 21:22 张志敏 阅读(2461) | 评论 (12) 编辑

Embedding and retrieving resources in custom controls
摘要: The custom controls that you develop not only contain the logic and data but also things such as images and JavaScript files. One easy way to make these images and script files available to your control at run time is to deploy them along with your control. This approach, though easy, is error prone. What if somebody deletes the images after the deployment? What if someone replaces the script files with malicious script? The best way is to embed such files in your control assembly itself and ret阅读全文

posted @ 2006-07-21 15:37 张志敏 阅读(1238) | 评论 (0) 编辑

原文地址:https://www.cnblogs.com/Leo_wl/p/2481346.html