C# Sqlite 应用记录

来源:互联网 发布:rds sql server 编辑:程序博客网 时间:2024/06/05 14:21
 

1. 有Sqlite的.net2.0 3.5的驱动,安装后和ole驱动一样用法,大有一些以SQLite***开头的和ole对应一样的类。

连接字符串例如“Data Source=文件名;Pooling=true;FailIfMissing=false”。Pooling=true;FailIfMissing=false有对应的意义,google一下就有啦,我到没有用到这两个设置。

2.就是Datetime类型,和其他有些区别。

他的默认格式是ISO 8601标准字符串,是标准时间。

有内部函数,如下面的列表。

这里有3个注意的地方:

datetime(‘now’),注意这里的单引号是必须带着的,相当于.Net中的DateTime.Now,Oracle中的sysdate,表示当前时间,不过是标准时间, datetime(‘now’,‘+8 hour’)才是北京时间的当前时间。插入式直接用字符串insert into table1(datetime) values(‘2010-01-29 19:00:01’),必须用”YYYY-MM-DD HH24:MI:SS”的格式where 条件也一样 where datetime1 <= ‘2010-01-29 19:00:01’

 

Home » 未分类 » Sqlite日期和时间函数不求人 Sqlite日期和时间函数不求人
Posted by admin on 星期四 18 十二 2008
SQLite 包含了如下时间/日期函数:
datetime()…………………..产生日期和时间
date()………………………产生日期
time()………………………产生时间
strftime()………………….. 对以上三个函数产生的日期和时间进行格式化
datetime()的用法是:datetime(日期/时间,修正符,修正符…)
date()和time()的语法与datetime()相同。
在时间/日期函数里可以使用如下格式的字符串作为参数:
YYYY-MM-DD
YYYY-MM-DD HH:MM
YYYY-MM-DD HH:MM:SS
YYYY-MM-DD HH:MM:SS.SSS
HH:MM
HH:MM:SS
HH:MM:SS.SSS
now
其中now是产生现在的时间。
举例(写这个笔记的时间是2006年10月17日晚8点到10点,测试环境:SQLite 2.8.17,WinXP,北京时间):
例1.
select datetime(’now’);
结果:2006-10-17 12:55:54
例2.
select datetime(’2006-10-17′);
结果:2006-10-17 12:00:00
例3.
select datetime(’2006-10-17 00:20:00′,’+1 hour’,’-12 minute’);
结果:2006-10-17 01:08:00
例4.
select date(’2006-10-17′,’+1 day’,’+1 year’);
结果:2007-10-18
例5.
select datetime(’now’,’start of year’);
结果:2006-01-01 00:00:00
例6.
select datetime(’now’,’start of month’);
结果:2006-10-01 00:00:00
例7.
select datetime(’now’,’start of day’);
结果:2006-10-17 00:00:00
例8.
select datetime(’now’,’+10 hour’,’start of day’,’+10 hour’);
结果:2006-10-17 10:00:00
例9.
select datetime(’now’,’localtime’);
结果:2006-10-17 21:21:47
例10.
select datetime(’now’,’+8 hour’);
结果:2006-10-17 21:24:45
例3中的+1 hour和-12 minute表示可以在基本时间上(datetime函数的第一个参数)增加或减少一定时间。
例5中的start of year表示一年开始的时间。
从例8可以看出,尽管第2个参数加上了10个小时,但是却被第3个参数“start of day”把时间归零到00:00:00,随后的第4个参数在00:00:00
的基础上把时间增加了10个小时变成了10:00:00。
例9 把格林威治时区转换成本地时区。
例10把格林威治时区转换成东八区。
strftime()函数可以把YYYY-MM-DD HH:MM:SS格式的日期字符串转换成其它形式的字符串。
strftime() 的语法是strftime(格式, 日期/时间, 修正符, 修正符, …)
它可以用以下的符号对日期和时间进行格式化:
%d 月份, 01-31
%f 小数形式的秒,SS.SSS
%H 小时, []

最近使用ASP.NET+SQLite数据库开发一个网站程序,结果在日期处理上出现了很头痛的问题:
说明:  执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 
异常详细信息:  System.FormatException: 该字符串未被识别为有效的 DateTime。

解决方案:

在日期保存到Sqlite数据库时转换一个类型,比如:string _now = System.DateTime.Now.ToString("s");

也就是说在.ToString()方法中加一个s,即可解决日期读取错误的问题。

简单代码示例:

string _indate = Request["indate"];  //输入的日期如:2009-2-21
DateTime _inTime = Convert.ToDateTime(_indate);

//如下是保存数据SQL语句

insert into 表(indate) values(‘“ + _inTime.ToString("s") + "');   //这里转换

因为iso 8601的描述:(http://msdn.microsoft.com/zh-cn/library/ms187819.aspx )

给出了字符串示例:
* 2004-05-23T 14:25:10
* 2004-05-23T 14:25:10.487

所以Sqlite保存的日期要转为iso 8601标准字符串格式

使用 日期.ToString("s");这种方法转换成 iso 8601标准字符串格式了。
原创粉丝点击