Sqlite DateTime读取和写入格式问题

今天遇到个问题.

首先插入一个DataTime格式的数据:

string sql="insert into [table] (date_time) values('" + 

date_time.ToString() + "'";

执行如上命令.插入没有报告错误.

但是,我又用一条命令读取时:

string sql="select * from [table];
.....
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 [table] (date_time)" values('" + 

date_time.ToString("s") + "'";

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

附注:

我起先研究了BBSMAX的Sqlite数据库.我认为这个论坛会有好的解决方法.

但我错了.其实没有.bbsMax用了varchar代替DateTime格式.

我也照做了,但是当我用到 select * from [table] where date_time > '2006-1-1' and date_time< '2008-1-1'

类似这样的语句,想查询一个中间的时间类型时,语法错误.

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索sqlite
, 问题
, 字符串
, tostring
, 格式
, datatime
, 一个
, SQLite简明教程
SQLite示例
sqlite datetime 格式、c 读取sqlite格式、sqlite datetime、sqlite3 datetime、sqlite3 datetime类型,以便于您获取更多的相关知识。

时间: 2024-10-04 07:49:07

Sqlite DateTime读取和写入格式问题的相关文章

Sqlite DateTime 类型 读取和写入格式 注意的问题

今天遇到个问题. 首先插入一个DataTime格式的数据:string sql="insert into [table] (date_time) values('" + date_time.ToString() + "'"; 执行如上命令.插入没有报告错误. 但是,我又用一条命令读取时: string sql="select * from [table]; ..... IDataReader dr=cmd.ExecuteReader(); ...objec

文件下载-C#将文件写入SQL中再读取,.docx格式有问题

问题描述 C#将文件写入SQL中再读取,.docx格式有问题 C#上传下载代码中,将上传文件内容以二进制保存到SQL中,下载的时候doc和pdf没问题,docx会有文件损坏,截图如下: 但是文件确认后还是能打开并没有问题,想请教一下这个问题怎么解决~ 解决方案 文件超长或者编码有问题,文件不完整用word打开往往就是报错,但是可以打开. 建议你下载下来文件和原始文件用windiff比较下,看看是不是文件不完整或者中间有错误. pdf doc不报错也不见得就是正确,只是说它们对数据的验证不是很严格

《数字图像处理与机器视觉——Visual C++与Matlab实现》——1.4 读取和写入图像文件

1.4 读取和写入图像文件 数字图像处理与机器视觉--Visual C++与Matlab实现Matlab可以处理以下的图像文件类型:BMP.HDF.JPEG.PCX.TIFF.XWD.ICO.GIF.CUR.可以使用imread和imwrite函数对图像文件进行读写操作,使用imfinfo函数来获得数字图像的相关信息. 1.imread函数imread函数可以将指定位置的图像文件读入工作区.对于除索引图像以外的情况,其原型为: A = imread(FILENAME, FMT); 参数说明: F

c++怎样从txt文档中读取数据写入到三维矩阵中

问题描述 c++怎样从txt文档中读取数据写入到三维矩阵中 用MATLAB获取了一幅彩色图像的像素值,得到一个400*300*3的三维矩阵,并保存到txt文档中,怎么写一个c++小程序,把txt中的数据写入到一个三维矩阵中? %读取第k个图像,所有像素 srcImg = imread(fullfile(SRC, srcName)); %保存像素值到txt文档,便于C++测试使用 fid = fopen('JPEG2TXT.txt', 'wt+'); if fid == -1, return, e

socket-objectinputstream readobject 为何只能读取第一次写入的值

问题描述 objectinputstream readobject 为何只能读取第一次写入的值 public class TransEntity implements Serializable//传输信息实体封装类 { private static final long serialVersionUID = 1L; private String operaType;//用户操作类型;如发送文本消息,发送语音消息,发送音频消息 private String responseTags;//网络响应状

Java读取、写入文件如何解决乱码问题_java

读取文件流时,经常会遇到乱码的现象,造成乱码的原因当然不可能是一个,这里主要介绍因为文件编码格式而导致的乱码的问题.首先,明确一点,文本文件与二进制文件的概念与差异. 文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码.ANSI编码等等.二进制文件是基于值编码的文件,你可以根据具体应用,指定某个值是什么意思(这样一个过程,可以看作是自定义编码.) 因此可以看出文本文件基本上是定长编码的(也有非定长的编码如UTF-8).而二进制文件可看成是变长编码的,因为是值编码嘛,多少

《数据科学:R语言实现》——2.3 读取和写入CSV文件

2.3 读取和写入CSV文件 在之前的教程中,我们从雅虎财经下载了标普500历史价格数据.现在我们可以读取数据,并加载到R进程中,以备后续查看和操作.在本教程中,我们会介绍如何使用R函数读取文件. 准备工作 在本教程中,你需要完成之前的教程,并把标普500历史价格文本文件下载到当前目录. 实现步骤 执行下列步骤,从CSV文件中读取文本数据. 1.首先,使用getwd确定当前目录,使用list.files查看文件的位置: 2.然后,使用函数read.table指定逗号为分隔符,读取数据: 3.接着

C# 10个线程并发执行Halcon图像算法 报“尝试读取或写入受保护的内存。这通常指示其他内存已损坏。”

问题描述 如题,这个问题我已经纠结了快三个工作日了.我不同WinFrom程序一起动就会开启10个线程,并发对10张图片进行算法处理,问题是只要程序一起动就会报"尝试读取或写入受保护的内存.这通常指示其他内存已损坏."异常.我试过将8个线程停掉,只开两个,发现没有问题,开三个四个偶尔会出问题....反正10个一个开是一定会报异常的.开起来好像是线程开太多CPU反应不过来导致的问题,可是CPU反应不过来就会报"尝试读取或写入受保护的内存.这通常指示其他内存已损坏."异常

ArcEngine尝试读取或写入受保护的内存

先说一下我的开发环境: Win10 + ArcGIS10.0 + ArcEngine10.0 + Framework4.0 今天调用新的GP工具则出现"尝试读取或写入受保护的内存.这通常指示其他内存已损坏"的异常(在此环境下,昨天,我还能够正常的调用GP).对于这一问题,有两大奇怪之处:一是环境未发生改变,昨天能够正常调用GP,今天调用任何GP都报错:二是昨天写的代码还是能够正常执行GP. 百度.谷歌了一天,除了检查代码本身的问题,还尝试了各个方面测试:license权限问题.COM对