首页 新闻 会员 周边

SQLite 关于Date类型字段的条件查询得不到结果

0
[已解决问题] 解决于 2013-04-01 13:12
View Code
 1             try
 2             {
 3                 string selectSql = "delete from zz_pf_data where UploadState =  " + Convert.ToInt32(type).ToString() + " and update = '" + String.Format("{0:yyyy/MM/dd}",DateTime.Today.Date)+"'";
 4 
 5                 object o = SQLite.ExecuteCommand(selectSql, out _errMsg);
 6                 if (o == null)
 7                 {
 8                     return false;
 9                 }
10                 else
11                 {
12                     return true;
13                 }
14             }
15             catch (Exception e)
16             {
17                 _errMsg = e.Message;
18                 return false;
19             }

C#代码如上所示,有条件(时间为今天的字段)删除记录,执行没有抱语法错误,但是object o = SQLite.ExecuteCommand(selectSql, out _errMsg);返回的结果是0,也就是影响了数据库数据的行数0。请问各位大虾Date类型数据不能比较吗?如果能,该如何写?谢谢

amytal的主页 amytal | 菜鸟二级 | 园豆:225
提问于:2013-01-23 12:51
< >
分享
最佳答案
0

木有大虾解答,我只好蹩脚地用字符串来存取和比较时间了。。。。

amytal | 菜鸟二级 |园豆:225 | 2013-02-27 16:34
其他回答(2)
0

你在数据库的date格式是yyyy/mm/dd 还是yyyy-mm-dd这个要看清楚,因为他比对的时候是以字符串比较

Rich.T | 园豆:3440 (老鸟四级) | 2013-01-23 13:10

用不同的工具打开出现不同的形式,用了两个工具打开这个数据库表,update出现两种显示形式:一种是yyyy/mm/dd,一种是yyy-mm-dd,这个都不重要,执行的时候,貌似C#并不是按我的格式yyyy/mm/dd转化的,调试的时候,String.Format("{0:yyyy/MM/dd}",DateTime.Today.Date)的结果是yyyy-mm-dd形式,似乎会自动跟数据库格式匹配(个人理解)。

支持(0) 反对(0) amytal | 园豆:225 (菜鸟二级) | 2013-01-23 13:28

@amytal:

把update转换一下试试

date(update)='"  + DateTime.Now.ToString(“yyyy-MM-dd”) + "'

支持(0) 反对(0) Rich.T | 园豆:3440 (老鸟四级) | 2013-01-23 13:33

@Rich.T: 还是一样,没有效果

支持(0) 反对(0) amytal | 园豆:225 (菜鸟二级) | 2013-01-23 13:51

@amytal: 

先在查询分析器里试试能不能运行

select * from zz_pf_data where update='日期'

支持(0) 反对(0) Rich.T | 园豆:3440 (老鸟四级) | 2013-01-23 13:53

@Rich.T: 查询分析器报错:update=‘2013-01-23’有语法错误

支持(0) 反对(0) amytal | 园豆:225 (菜鸟二级) | 2013-01-23 14:27

@amytal: 

那就对了,你这样都不行,还指望能查得出来

支持(0) 反对(0) Rich.T | 园豆:3440 (老鸟四级) | 2013-01-23 14:28

@Rich.T: 

再试试下面这两个

select * from zz_pf_data where date(update)='日期'

select * from zz_pf_data where datetime(update)='日期 00:00:00'

支持(0) 反对(0) Rich.T | 园豆:3440 (老鸟四级) | 2013-01-23 14:30

@Rich.T: SQLite只有DATE和TIME类型,没有DateTime,你这两种都不行

支持(0) 反对(0) amytal | 园豆:225 (菜鸟二级) | 2013-01-23 14:32

@Rich.T: 我觉得还是参数有问题,难道必须是data或DateTime类型实参?

支持(0) 反对(0) amytal | 园豆:225 (菜鸟二级) | 2013-01-23 14:34
0

sqlite数据库要么是数字 要么是文本,所以你日期查询的话 本质上还是字符串比对,所以 对于今天的日期你本来也要做下转换:

DateTime.Now.ToString('yyyy-MM-dd') 这样出来的格式 然后 看你数据库里的格式是怎么样的 
neverlost | 园豆:570 (小虾三级) | 2013-01-23 13:26

delete from zz_pf_data where UploadState =  1 and update = 2013-01-23 这个是调试时候,监视selectSql的值,但是执行结果还是0,数据库里的数据是2013-01-23。

支持(0) 反对(0) amytal | 园豆:225 (菜鸟二级) | 2013-01-23 13:42

@amytal:  你sql有问题 没单引号

支持(0) 反对(0) neverlost | 园豆:570 (小虾三级) | 2013-01-24 14:26

@neverlost: 有单引号也无法比较,这个不是单引号的原因

支持(0) 反对(0) amytal | 园豆:225 (菜鸟二级) | 2013-01-28 14:56
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册