你写成:select * from ReturnGoodsMains where datetime(ReturnDate)>='2012-12-02 00:00:00' and datetime(ReturnDate)<'2012-12-03 00:00:00' ; 试试。
'2012-12-03 00:00:00' 转成datetime类型在比较试试,应该是时间格式问题
把时间类型转换为varchar类型的呢 select * from #table where varchar(16,getdate(),120) between '2012-12-02 00:00' and '2012-12-10 00:00'
把时间类型转换为varchar类型的呢 写错了,更正,呵呵 select * from #table where CONVERT(varchar(16),getdate(),120) between '2012-12-02 00:00' and '2012-12-10 00:00'
select * from ReturnGoodsMains where datetime(ReturnDate)>=datetime('2012-12-2 00:00:00') and datetime(ReturnDate)<datetime('2012-12-3 00:00:00')这样试下,应该能返回数据 select * from ReturnGoodsMains where ReturnDate>='2012-12-2 00:00:00' and ReturnDate<'2012-12-10 00:00:00' ; 执行后没有结果 这个是因为你数据库中存放的是字符串,而对于字符串的比较是按字母一个一个比较的,而字母'2012-12-2中的2大于'2012-12-1中的1所以查询不出数据来
select * from ReturnGoodsMains where CONVERT(datetime, ReturnDate)>='2012-12-2 00:00:00' and CONVERT(datetime,ReturnDate)<'2012-12-3 00:00:00' ;select * from ReturnGoodsMains where ReturnDate>='2012-12-2 00:00:00' and ReturnDate<'2012-12-3 00:00:00' ;select * from ReturnGoodsMains where ReturnDate>='2012-12-2 00:00:00' and ReturnDate<'2012-12-10 00:00:00' ; 前2中可以查出一条数据,最后一种不能查出数据。原因是:ReturnDate的类型是varchar,也就是字符串了,那如果是字符串比较,这这样where ReturnDate>='2012-12-2 00:00:00' and ReturnDate<'2012-12-10 00:00:00'就绝对查不出数据的,字符串比较的时候会先从第一个字符比较,如果第一个字符相等,则就比较第2个字符,以此类推, ReturnDate<'2012-12-10 00:00:00' 当比较到‘2012-12-’的时候前面都有匹配的,则开始比较1,由于此时数据库中是不存在比“2012-12-1”还小的数据,所以就查不出。
select * from ReturnGoodsMains where datetime(ReturnDate)>=datetime('2012-12-02 00:00:00') and datetime(ReturnDate)<datetime('2012-12-03 00:00:00')
用SQLiteManager可以查出来,用程序就不行(以前是可以的,代码没有变过)select source,equipId,opaId,icuaId,[time],updateTime,status,otherInfo,data,ReturnValue from CollectData where updateTime>="2014-12-25 00:00:00" and updateTime<"2014-12-25 11:45:00" Order By updateTime desc limit 1000
试试。
select * from #table where varchar(16,getdate(),120) between '2012-12-02 00:00' and '2012-12-10 00:00'
写错了,更正,呵呵
select * from #table where CONVERT(varchar(16),getdate(),120) between '2012-12-02 00:00' and '2012-12-10 00:00'
select * from ReturnGoodsMains where ReturnDate>='2012-12-2 00:00:00' and ReturnDate<'2012-12-10 00:00:00' ;
执行后没有结果
这个是因为你数据库中存放的是字符串,而对于字符串的比较是按字母一个一个比较的,而字母'2012-12-2中的2大于'2012-12-1中的1所以查询不出数据来
不要用nvarchar
1. dt.ToString("yyyy-MM-dd HH:mm:ss")
2. dt.ToString("s")
这样试试
再不行就看看你sqlite那个IED里的时间格式是什么
where CONVERT(datetime, ReturnDate)>='2012-12-2 00:00:00'
and CONVERT(datetime,ReturnDate)<'2012-12-3 00:00:00' ;select * from ReturnGoodsMains
where ReturnDate>='2012-12-2 00:00:00'
and ReturnDate<'2012-12-3 00:00:00' ;select * from ReturnGoodsMains
where ReturnDate>='2012-12-2 00:00:00'
and ReturnDate<'2012-12-10 00:00:00' ;
前2中可以查出一条数据,最后一种不能查出数据。原因是:ReturnDate的类型是varchar,也就是字符串了,那如果是字符串比较,这这样where ReturnDate>='2012-12-2 00:00:00'
and ReturnDate<'2012-12-10 00:00:00'就绝对查不出数据的,字符串比较的时候会先从第一个字符比较,如果第一个字符相等,则就比较第2个字符,以此类推, ReturnDate<'2012-12-10 00:00:00' 当比较到‘2012-12-’的时候前面都有匹配的,则开始比较1,由于此时数据库中是不存在比“2012-12-1”还小的数据,所以就查不出。