`
lizhuang
  • 浏览: 899215 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

转帖:sqlite datetime转换

阅读更多
原文;http://hi.baidu.com/hopesoft/blog/item/4c29e7f83f320b09d9f9fd96.html

今天遇到个问题.
首先插入一个DataTime格式的数据:
string sql="insert into  (date_time) values('" + date_time.ToString() + "'";
执行如上命令.插入没有报告错误.

但是,我又用一条命令读取时:
string sql="select * from ;
.....
IDataReader dr=cmd.ExecuteReader();
...
object obj=dr["data_time"];//在这里出错了,说是无法转换为DataTime格式,字符串不正确

--------------------------------------------------------------------------------------------

我找了一天的教程,找了一天的google.
答案是:sqlite用的全球时间UTC,要用datetime()函数转换若干.
我也试了,发现好像运行的不像教程上说的那样!

实在没办法,来硬的吧,硬着头皮看源代码吧.
他的继承格式大致如下:
SqliteConvert-->SqliteBase-->Sqlite3
在SqliteConvert中定义了转换格式,上面说的很明白,默认DataTime格式为 ISO8601
然后,SqliteConnection 用到了Sqlite3.

我就研究了SqliteConnection的源代码,发现Sqlite不是用的什么全球的UTC时间.
其实就是用的国际标准ISO 8601标准.

那我就着手看怎么才能让我的程序和sqlite兼容.
我生成的字符串和sqlite的有什么不同.

最后看了msdn上对iso 8601的描述:(http://msdn.microsoft.com/zh-cn/library/ms187819.aspx)
给出了字符串示例:
* 2004-05-23T14:25:10
* 2004-05-23T14:25:10.487
而我生成的字符串 data_time.ToString()和他的有一个不同的地方.
就是没有那个T....(其实我也不明白那个T有什么关键作用,反正Access,MySql,MsSql都没这问题的)

我又在想,如果我用一个T会如何?
就尝试.用data_time.ToString("s");这种方法转换成 iso 8601标准字符串格式

结果我吃屎吃了个酱板头(无锡话,意思是运气好),竟然成功了.

如下:
string sql="insert into  (date_time)" values('" + date_time.ToString("s") + "'";

这样,问题就解决了,希望大家能够看到此贴,并发扬光大,到处流传,这样才能发展Sqlite的普及率.

附注:
我起先研究了BBSMAX的Sqlite数据库.我认为这个论坛会有好的解决方法.
但我错了.其实没有.bbsMax用了varchar代替DateTime格式.
我也照做了,但是当我用到 select * from  where date_time > '2006-1-1' and date_time< '2008-1-1'
类似这样的语句,想查询一个中间的时间类型时,语法错误.

所以,到头来,我还是从头开始研究DateTime格式.字符串格式虽然能够凑合,但是却没有那么方便和强大.
分享到:
评论

相关推荐

    sqlite-shell-win32-x86: sqlite3.exe

    1. 内嵌数据库一般是用sqlite进行轻量级管理的。网上可以下到sqlite-shell-win32-x86: sqlite3.exe 2. 为了方便命令行执行,将sqlite3.exe放到svn 项目的主目录下,和.svn目录同级下。 3. cmd进入该目录下,执行 ...

    最新版: Sqlite ODBC Driver 0.99991 (SQLite 3.43.2) 安装版和dll版

    网上很难下载到,分享给需要的:sqlite3odbc.dll 属性 文件版本 1.34455.0,0 产品名称 ODBC Driver for SQLite3 3.43.2 产品版本 0.99991 版权 Copyriglt @2004-2023 ,de&gt; 大小 942 KB 修改日期 2023-10-23 21:50 ...

    Android项目设计与开发:SQLite 2.ppt

    嵌入式Android项目设计与开发 第六章 数据存储 ——SQLite 2 SQLite 数据库管理员 数据库实体A 表 表 数据库实体B 表 表 数据库实体 表 表 SQLite 我们已经掌握: SQLite是一款轻量级的关系型数据库,它的运算效率高...

    Sqlite3编译及使用示例代码

    SQLite3是一种轻量级的、开源的、自包含的数据库引擎,它不需要单独的服务器进程,可以直接嵌入到各种应用程序中。这篇资源提供的是SQLite3的编译工程和使用示例,非常适合初学者快速上手。 SQLite3的编译过程通常...

    SQLite数据库 sqlitedll库文件 sqlite驱动JAR包 sqlite工具

    连接JDBC的URL格式为jdbc:sqlite:/path。这里的path为指定到SQLite数据库文件的路径,例如: jdbc:sqlite://dirA/dirB/dbfile jdbc:sqlite://DRIVE:/dirA/dirB/dbfile jdbc:sqlite://COMPUTERNAME/shareA/dirB/db...

    sqlite-jdbc-3.34.0-API文档-中文版.zip

    赠送jar包:sqlite-jdbc-3.34.0.jar; 赠送原API文档:sqlite-jdbc-3.34.0-javadoc.jar; 赠送源代码:sqlite-jdbc-3.34.0-sources.jar; 赠送Maven依赖信息文件:sqlite-jdbc-3.34.0.pom; 包含翻译后的API文档:...

    SVN 出错误清理工具 sqlite3.exe

    当svn 出现clean up 死循环时,或者...1.把sqlite3.exe放到.svn文件夹下 2.在.svn目录下打开命令行输入以下语句: sqlite3 wc.db "delete from work_queue" sqlite3 wc.db "delete from wc_lock" 3. svn 执行clean up

    Android项目设计与开发:SQLite 1.ppt

    嵌入式Android项目设计与开发 第六章 数据存储 ——SQLite 1 SQLite 概念: SQLite是一款轻量级的关系型数据库,它的运算效率高,占用资源少,因此比较适合在移动设备上使用。 SQLite Android为了让我们更加方便地...

    Android程序技术:SQLite数据库.pptx

    Android程序技术:SQLite数据库.pptx

    sqlite-jdbc-3.15.1-API文档-中文版.zip

    赠送jar包:sqlite-jdbc-3.15.1.jar; 赠送原API文档:sqlite-jdbc-3.15.1-javadoc.jar; 赠送源代码:sqlite-jdbc-3.15.1-sources.jar; 赠送Maven依赖信息文件:sqlite-jdbc-3.15.1.pom; 包含翻译后的API文档:...

    Android :SQLite3数据库的简单应用,实现数据增删改查App

    Android :SQLite3数据库的简单应用,实现数据增删改查App

    Android项目设计与开发:SQLite 3.ppt

    嵌入式Android项目设计与开发 第六章 数据存储 ——SQLite 3 SQLite 内容: SQLite如何插入数据。 (1)SQL语句。insert into table…value() (2)使用SQLiteOpenHelper接口 实验 通过SQLiteOpenHelper接口insert ...

    sqlite3文件(sqlite3:not found 解决方法)

    sqlite3文件(用于解决安卓真机中sqlite3:not found的错误) http://blog.csdn.net/hust_twj/article/details/52212558

    Android项目设计与开发:SQLite 5.ppt

    Android项目设计与开发:SQLite 5.ppt

    sqlite3 not found的解决办法

    在使用Linux或Unix类操作系统时,可能会遇到"sqlite3 not found"这样的错误提示,这通常意味着系统中没有安装SQLite3这个数据库引擎或者其路径没有被正确地添加到系统的PATH环境变量中。SQLite3是一个轻量级、开源的...

    SQLite4Unity包下载

    SQLite4Unity 是 Unity 中的一个 SQLite 数据库操作工具库,用于在 Unity 项目中访问 SQLite 数据库。它提供了许多可用于创建,查询和更新 SQLite 数据库的功能,而无需编写复杂的 SQL 查询语句。 SQLite4Unity 是...

    C#分享辅助类:SQLite数据库操作(SQLiteDao)

    4. **数据转换**:`DataRowExtensions.cs`和`DataTableExtensions.cs`文件可能包含扩展方法,用于将数据库查询结果转换为更易于处理的数据结构,如`DataRow`和`DataTable`,以及对这些数据结构进行操作的方法。...

    SQLite教程(一):SQLite数据库介绍

     SQLite是目前最流行的开源嵌入式数据库,和很多其他嵌入式存储引擎相比(NoSQL),如BerkeleyDB、MemBASE等,SQLite可以很好的支持关系型数据库所具备的一些基本特征,如标准SQL语法、事务、数据表和索引等。...

    SQLite时间转化问题

    SQLite 时间转换问题 SQLite 中的日期和时间函数是数据库管理中非常重要的一部分,掌握这些函数可以帮助开发者更好地处理日期和时间的转换操作。下面是 SQLite 中五个时间函数的介绍: 1. date() 函数:该函数...

Global site tag (gtag.js) - Google Analytics