主键自增
创建表时将主键列设置为 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', ...) |
可接受的时间字符串
- YYYY-MM-DD
- YYYY-MM-DD HH:MM
- YYYY-MM-DD HH:MM:SS
- YYYY-MM-DD HH:MM:SS.SSS
- YYYY-MM-DDTHH:MM
- YYYY-MM-DDTHH:MM:SS
- YYYY-MM-DDTHH:MM:SS.SSS
- HH:MM
- HH:MM:SS
- HH:MM:SS.SSS
- now
- DDDDDDDDDD
在第 5 至第 7 个格式中, "T" 是 ISO-8601 规定的日期时间分隔符; 第 8 至 第 10 个格式中只声明了时间, 其对应的日期为 2000-01-01 ; 第 11 个格式 ‘now’ 表示从系统获取的当前 UTC 时间; 第 12 个格式则表示从儒略日起的日期数。
修饰符
时间字符串可以跟多个可选的修饰符来对时间进行调整, 每个修饰符是对其左边时间值得一个转换, 从左到右依次应用, 顺序很重要。 可用的修饰符如下:
- NNN days
- NNN hours
- NNN minutes
- NNN.NNNN seconds
- NNN months
- NNN years
- start of month
- start of year
- start of day
- weekday N
- unixepoch
- localtime
- 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; |
.Net Framework
使用 Task 简化异步编程
posted @ 2012-01-16 09:36 张志敏 阅读(3704) | 评论 (12) 编辑
在 MonoTouch 中使用 Newtonsoft.Json
posted @ 2011-09-25 22:39 张志敏 阅读(915) | 评论 (0) 编辑
几款 .Net Reflector 的替代品
posted @ 2011-05-12 17:02 张志敏 阅读(6003) | 评论 (14) 编辑
使用 Castal DynamicProxy 简化 Silverlight 数据绑定
posted @ 2011-03-07 16:11 张志敏 阅读(1176) | 评论 (6) 编辑
Silverlight 异步任务队列实现
posted @ 2010-12-24 13:24 张志敏 阅读(2078) | 评论 (21) 编辑
使用 MonoDevelop 调试 Unity3D 的正确步骤
posted @ 2010-12-08 13:59 张志敏 阅读(1056) | 评论 (0) 编辑
Silverlight 异步单元测试
posted @ 2010-03-07 14:50 张志敏 阅读(1708) | 评论 (3) 编辑
Silverlight 的导航框架与动态加载
posted @ 2009-10-24 15:05 张志敏 阅读(3543) | 评论 (7) 编辑
OpenTK 入门系列
posted @ 2009-10-17 13:32 张志敏 阅读(2871) | 评论 (8) 编辑
Silverlight 使用 ResourceDictionary 和 MergedDictionaries 时的注意问题
posted @ 2009-10-14 10:47 张志敏 阅读(1256) | 评论 (1) 编辑
Silverlight中枚举并加载客户端程序集
posted @ 2009-10-10 08:54 张志敏 阅读(343) | 评论 (0) 编辑
Silverlight反射的安全注意事项
posted @ 2009-10-10 08:46 张志敏 阅读(330) | 评论 (0) 编辑
log4net 中logger默认日志等级的设计意图详解
posted @ 2009-08-28 21:53 张志敏 阅读(354) | 评论 (0) 编辑
Silverlight版本的LoadMask
posted @ 2009-06-02 22:20 张志敏 阅读(2133) | 评论 (3) 编辑
从源代码编译安装 Mono 2.4 和 MonoDevelop 2.0
posted @ 2009-05-09 17:43 张志敏 阅读(1508) | 评论 (6) 编辑
C# 中的 volatile 关键字
posted @ 2009-04-28 15:05 张志敏 阅读(1078) | 评论 (0) 编辑
Linq 中按照多个值进行分组(GroupBy)
posted @ 2009-04-24 15:04 张志敏 阅读(2240) | 评论 (0) 编辑
使用log4net记录ibatis.net的SQL动态查询语句
posted @ 2009-03-23 17:05 张志敏 阅读(1148) | 评论 (4) 编辑
用SharpDevelop3调试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
posted @ 2006-07-21 15:37 张志敏 阅读(1238) | 评论 (0) 编辑