SQLite 按时间段查询日期 显示数据问题

问题描述

--创建表CREATETABLEReturnGoodsMains(ReturnSysIDVARCHARNOTNULL,ReturnDateVARCHAR,PRIMARYKEY(ReturnSysID));--添加数据insertintoReturnGoodsMains(ReturnSysID,ReturnDate)values('63X01105030497201212020001','2012-12-216:14:49');insertintoReturnGoodsMains(ReturnSysID,ReturnDate)values('63X01105030497201212020002','2012-12-116:15:43');insertintoReturnGoodsMains(ReturnSysID,ReturnDate)values('63X01105030497201212020003','2012-12-916:16:12');insertintoReturnGoodsMains(ReturnSysID,ReturnDate)values('63X01105030497201212020004','2012-12-616:18:18');insertintoReturnGoodsMains(ReturnSysID,ReturnDate)values('63X01105030497201212020005','2012-12-916:19:30');insertintoReturnGoodsMains(ReturnSysID,ReturnDate)values('63X01105030497201212020006','2012-12-916:20:01');问题来了:select*fromReturnGoodsMainswheredatetime(ReturnDate)>='2012-12-200:00:00'anddatetime(ReturnDate)<'2012-12-300:00:00';执行后无结果;select*fromReturnGoodsMainswhereReturnDate>='2012-12-200:00:00'andReturnDate<'2012-12-300:00:00';执行后显示结果:63X011050304972012120200012012-12-216:14:49正确select*fromReturnGoodsMainswhereReturnDate>='2012-12-200:00:00'andReturnDate<'2012-12-1000:00:00';执行后没有结果。请问大家这是怎么回事,弄两天了就是查不出来。

解决方案

解决方案二:
VARCHAR上进行>=等时间比较是不可靠的,
解决方案三:
引用1楼stonespace的回复:

VARCHAR上进行>=等时间比较是不可靠的,

就算是datetime类型的也是一样,我试过了。。。
解决方案四:
会不会是2012-12-200:00:00这种格式不符合要求,sqlite中yyyy-MM-ddHH:mm:ss才被识别为日期,也就是说月份和日都需要2位才行。
解决方案五:
你写成:select*fromReturnGoodsMainswheredatetime(ReturnDate)>='2012-12-0200:00:00'anddatetime(ReturnDate)<'2012-12-0300:00:00';试试。
解决方案六:
'2012-12-0300:00:00'转成datetime类型在比较试试,应该是时间格式问题
解决方案七:
把时间类型转换为varchar类型的呢select*from#tablewherevarchar(16,getdate(),120)between'2012-12-0200:00'and'2012-12-1000:00'
解决方案八:
把时间类型转换为varchar类型的呢写错了,更正,呵呵select*from#tablewhereCONVERT(varchar(16),getdate(),120)between'2012-12-0200:00'and'2012-12-1000:00'
解决方案九:
select*fromReturnGoodsMainswheredatetime(ReturnDate)>=datetime('2012-12-200:00:00')anddatetime(ReturnDate)<datetime('2012-12-300:00:00')这样试下,应该能返回数据select*fromReturnGoodsMainswhereReturnDate>='2012-12-200:00:00'andReturnDate<'2012-12-1000:00:00';执行后没有结果这个是因为你数据库中存放的是字符串,而对于字符串的比较是按字母一个一个比较的,而字母'2012-12-2中的2大于'2012-12-1中的1所以查询不出数据来
解决方案十:
要把时间转换格式,以前我遇到过这个问题。本想发源码但没找到那个项目,
解决方案十一:
用日期时间型不要用nvarchar
解决方案十二:
引用3楼dalmeeme的回复:

会不会是2012-12-200:00:00这种格式不符合要求,sqlite中yyyy-MM-ddHH:mm:ss才被识别为日期,也就是说月份和日都需要2位才行。http://www.sqlite.org/lang_datefunc.html

DateTimedt=Convert.ToDateTime("2012-12-300:00:00");1.dt.ToString("yyyy-MM-ddHH:mm:ss")2.dt.ToString("s")这样试试再不行就看看你sqlite那个IED里的时间格式是什么
解决方案十三:

解决方案十四:
以上结果Sqlite3.0
解决方案十五:
select*fromReturnGoodsMainswhereCONVERT(datetime,ReturnDate)>='2012-12-200:00:00'andCONVERT(datetime,ReturnDate)<'2012-12-300:00:00';select*fromReturnGoodsMainswhereReturnDate>='2012-12-200:00:00'andReturnDate<'2012-12-300:00:00';select*fromReturnGoodsMainswhereReturnDate>='2012-12-200:00:00'andReturnDate<'2012-12-1000:00:00';前2中可以查出一条数据,最后一种不能查出数据。原因是:ReturnDate的类型是varchar,也就是字符串了,那如果是字符串比较,这这样whereReturnDate>='2012-12-200:00:00'andReturnDate<'2012-12-1000:00:00'就绝对查不出数据的,字符串比较的时候会先从第一个字符比较,如果第一个字符相等,则就比较第2个字符,以此类推,ReturnDate<'2012-12-1000:00:00'当比较到‘2012-12-’的时候前面都有匹配的,则开始比较1,由于此时数据库中是不存在比“2012-12-1”还小的数据,所以就查不出。
解决方案:
select*fromReturnGoodsMainswheredatetime(ReturnDate)>=datetime('2012-12-0200:00:00')anddatetime(ReturnDate)<datetime('2012-12-0300:00:00')
解决方案:
`还有你2号3号之间没数据换个数据就好了~还有就是日期格式必须是012-12-0216:14:49而不是2012-12-216:14:49少个0`~~~~~太囧了~
解决方案:
用SQLiteManager可以查出来,用程序就不行(以前是可以的,代码没有变过)selectsource,equipId,opaId,icuaId,[time],updateTime,status,otherInfo,data,ReturnValuefromCollectDatawhereupdateTime>="2014-12-2500:00:00"andupdateTime<"2014-12-2511:45:00"OrderByupdateTimedesclimit1000

时间: 2024-11-03 01:38:43

SQLite 按时间段查询日期 显示数据问题的相关文章

vb.net+sqLite 数据库 时间段查询

问题描述 我想要查询:1.当天的数据2.当月的数据,3当年的数据麻烦写下查询语句dimstrasstring="select*fromtongjiwhere[销售时间]=XXXXX"我想在搞不明白这个XXXXX应该如何写 解决方案 解决方案二:用strftime函数解决方案三:引用1楼chb345536638的回复: 用strftime函数 具体该怎么用呢..我查询了下没有找打关于vb.netstrftime函数有关的描述解决方案四:引用2楼shelyas的回复: Quote: 引用1

php实现查询功能(数据访问)

本文实例为大家分享了php实现查询功能的具体代码,供大家参考,具体内容如下 输入关键字效果 代码: <body> <h1>汽车信息</h1> <?php require"DBDA.class1.php";//$type 代表SQL语句的类型,0代表增删改,1代表查询 $db = new DBDA(); //如果没有提交数据,显示所有 //如果有提交数据,根据关键字查询显示 $name = ""; $tj1 = "

ajax-怎么根据日期控件里所选的值来显示不同日期的数据

问题描述 怎么根据日期控件里所选的值来显示不同日期的数据 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 无标题文档 $(function(){ $("#week ul a li").click(function(){ $("#we

Android操作SQLite数据库(增、删、改、查、分页等)及ListView显示数据的方法详解_Android

本文实例讲述了Android操作SQLite数据库(增.删.改.查.分页等)及ListView显示数据的方法.分享给大家供大家参考,具体如下: 由于刚接触android开发,故此想把学到的基础知识记录一下,以备查询,故此写的比较啰嗦: 步骤如下: 一.介绍: 此文主要是介绍怎么使用android自带的数据库SQLite,以及把后台的数据用ListView控件显示 二.新建一个android工程--DBSQLiteOperate 工程目录: 三.清单列表AndroidManifest.xml的配置

如何使用 ASP.NET、ADO.NET 和 Visual C# .NET 查询和显示 Excel 数据

ado|asp.net|excel|visual|数据|显示 创建示例 Excel 工作表启动 Microsoft Excel,然后创建一个新的工作表. 将以下信息添加到新工作表中以创建一个简单的 Excel 数据库: A B 1 FirstName LastName 2 Scott Bishop 3 Katie Jordan 注意:虽然在本示例中数据是从单元格 A1 开始的,但是您可以将此数据添加到工作表中的任何相邻接的单元格. 突出显示此数据所在的行和列. 在插入菜单上,指向名称,然后单击定

python从sqlite读取并显示数据的方法

  这篇文章主要介绍了python从sqlite读取并显示数据的方法,涉及Python操作SQLite数据库的读取及显示相关技巧,需要的朋友可以参考下 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 import cgi, os, sys import sqlite3 as db conn = db.connect('test.db') cursor = conn.cursor() conn.row_factory = db.Row cursor.execute("sele

javaweb-使用easyui显示数据时,日期类型显示的object Object??

问题描述 使用easyui显示数据时,日期类型显示的object Object?? 后台代码: Map map = new HashMap(); map.put("tableName", "engage_major_release"); map.put("fields", "*"); map.put("orderField", "mre_id"); map.put("sqlwh

sqlite多表查询并去表2最后一条数据

问题描述 sqlite多表查询并去表2最后一条数据 类似微信的最近聊天界面,A表:id,name B表:id,time A表的id是主键,不会重复,B表的id不是主键可以重复,比如A:数据1(id=1,name="test"),数据2(id=2,name="test2").B:数据1(id=1,time=1)数据2(id=1,time=2),数据3(id=1,time=3),数据4(id=2,time=1),数据5(id=2,time=5),我通过联查方法一次行获取

jsp-JSP,MVC查询外键所在表中的其他内容并放入list中在前台页面显示数据

问题描述 JSP,MVC查询外键所在表中的其他内容并放入list中在前台页面显示数据 VO中的字段 Emp private String id; private String e_id; private String e_head; private String e_name; private String e_sex; private Dep d_id; private String e_tell; private String e_address; Dep private String d_