问题描述
我正在写个winform项目,用的vb.net+SqLite。在写到一个查询函数:button1。。。。'查询当天销售合计记录'button1。。。。'查询当天销售合计记录Dimtime1AsDateTime=DateTime.Today()DimstrLabelAsString="selectsum([销售金额])asw,sum([总销售数量])ass,sum([收到金额])ast,sum([合计毛利])asefromXSTJwhere[销售时间]like('"&time1&"%')orderby[销售单据]desc"'button2。。。。‘查询一个月内的销售合计记录Dimtime1,time2AsDateTimetime1=DateSerial(Year(Now()),Month(Now()),1)‘这个月一号time2=DateSerial(Year(Now()),Month(Now())+1,0)’这个月最后一天DimstrLabelAsString="selectsum([销售金额])asw,sum([总销售数量])ass,sum([收到金额])ast,sum([合计毛利])asefromXSTJ[销售时间]BETWEEN('"&time1&"%')and('"&time2&"%')orderby[销售单据]desc"'button3。。。。’查询一年内销售合计记录Dimtime1AsDateTimeDimstrLabelAsString="selectsum([销售金额])asw,sum([总销售数量])ass,sum([收到金额])ast,sum([合计毛利])asefromXSTJwhere[销售时间]like('"&time1.year&"%')orderby[销售单据]desc"
其他语句我就不写了就是查询语句问题。我在win7下用vs2010写的,win7运行所有查询都没有问题,都可以查询到数据。。但是让我纳闷的是,换xp下运行或者最新win10运行(win8没试过),结果只有一年销售统计有记录,每天统计的和一个月统计的没有数据。。。难道win7和xp的查询sql函数不一样吗?怎么在C#或者vb.net中使用sql的datediff()函数呢?求高手指点!!!分不多先给20
解决方案
解决方案二:
查看SQL的版本是否一样
解决方案三:
把代码放到查询分析器运行一下就知道怎么回事了。
解决方案四:
时间最好不要用between....用专门的时间比较函数
解决方案五:
引用1楼xclzteb的回复:
查看SQL的版本是否一样
在哪里查看,代码查询器没问题
解决方案六:
引用3楼letusgo1234567890的回复:
时间最好不要用between....用专门的时间比较函数
我知道有datediff()比较函数但是不知道在vb.net中怎么运用的。。我直接用&符号添加不能运行有错误
解决方案七:
时间用like??你数据库里的时间不是时间类型,而是个字符串?
解决方案八:
time1是个时间类型你把这个时间类型的变量直接拼接进SQL语句里它会隐式转换为字符串类型隐式转换,是没有格式化的,就是调用的默认的ToString()方法那么如果你操作系统日期格式不是正常的年-月-日时:分:秒而是年-月-日星期上午/下午时:分:秒那么这样拼接进SQL语句里去当然就匹配不上了
解决方案九:
引用7楼Z65443344的回复:
time1是个时间类型你把这个时间类型的变量直接拼接进SQL语句里它会隐式转换为字符串类型隐式转换,是没有格式化的,就是调用的默认的ToString()方法那么如果你操作系统日期格式不是正常的年-月-日时:分:秒而是年-月-日星期上午/下午时:分:秒那么这样拼接进SQL语句里去当然就匹配不上了
数据库里的类型是时间类型datetime因为之前用这个有数据就以为可以查询到呢~~~哦哦,那样的话是不是要用:[销售时间]=‘“&time1&”’来匹配呢?我试试谢谢提醒
解决方案十:
引用7楼Z65443344的回复:
time1是个时间类型你把这个时间类型的变量直接拼接进SQL语句里它会隐式转换为字符串类型隐式转换,是没有格式化的,就是调用的默认的ToString()方法那么如果你操作系统日期格式不是正常的年-月-日时:分:秒而是年-月-日星期上午/下午时:分:秒那么这样拼接进SQL语句里去当然就匹配不上了
[销售时间]=‘“&time1&”’这个还是没结果~~~搞不懂了。。。天啊。。大侠datediff()函数类型怎么运用呢能说下吗?
解决方案十一:
引用7楼於黾的回复:
time1是个时间类型你把这个时间类型的变量直接拼接进SQL语句里它会隐式转换为字符串类型隐式转换,是没有格式化的,就是调用的默认的ToString()方法那么如果你操作系统日期格式不是正常的年-月-日时:分:秒而是年-月-日星期上午/下午时:分:秒那么这样拼接进SQL语句里去当然就匹配不上了
那是不是要把查询到的时间格式化一下!
解决方案十二:
就不应该用本地计算机的时间啊,万一客户端时间不对怎么办?应该取服务器上的时间...getdate()走起
解决方案十三:
你这样写不行的,不信你查下12月
解决方案十四:
感觉应该是日期时间格式问题。本机设定的日期时间格式和数据库里面的格式不一样。
解决方案十五:
"...fromXSTJ[销售时间]BETWEEN('"&time1.ToString("yyyy-MM-dd")&"%')..."
拼SQL的时候都按照上面这样用ToString()进行指定格式的转换。又:[销售时间]前面少个WHERE,这样的语句没出错?
解决方案:
解决方案:
该回复于2015-12-31 23:47:03被版主删除