select sum(FNum) as a from TStock where FDATE between '2011-07-17 00:00:00' and '2011-07-18 23:59:59'
select sum(FNum) as a from TStock where FDATE between '2011-07-17 00:00:00' and '2011-07-18 23:59:59.999'
这两句话查询出来的结果就不一样 请高人解释一下
我已经知道为什么了 我试了一下 '2011-07-17 23:59:59.999'='2011-07-18 00:00:00'
各位不好意思了 我只能给先回答的了...
SQL带上毫秒的查询为什么结果不一样
答案:5 悬赏:70 手机版
解决时间 2021-01-02 20:58
- 提问者网友:爱了却不能说
- 2021-01-02 07:50
最佳答案
- 五星知识达人网友:猎心人
- 2021-01-02 09:26
where FDATE between '2011-07-17 00:00:00' and '2011-07-18 23:59:59.999'
这个between两边都是字符串,是按字符串比较的,长度都不一样,统计的行数就多了了
你可以看下
select FDATE as a from TStock where FDATE between '2011-07-17 00:00:00' and '2011-07-18 23:59:59.999'
这个的结果,
如果是按时间比较的话,你就要吧这两个字符串转成对应的时间就可以了
这个between两边都是字符串,是按字符串比较的,长度都不一样,统计的行数就多了了
你可以看下
select FDATE as a from TStock where FDATE between '2011-07-17 00:00:00' and '2011-07-18 23:59:59.999'
这个的结果,
如果是按时间比较的话,你就要吧这两个字符串转成对应的时间就可以了
全部回答
- 1楼网友:迟山
- 2021-01-02 12:52
那你看一下select * from TStock where FDATE between '2011-07-18 23:59:59' and '2011-07-18 23:59:59.999'是什么
- 2楼网友:从此江山别
- 2021-01-02 12:41
条件不一样结果当然不一样,'2011-07-18 23:59:59'实际上是'2011-07-18 23:59:59.000'所以换成'2011-07-18 23:59:59.999'结果当然不一样了,因为在'2011-07-18 23:59:59.000'与'2011-07-18 23:59:59.999'之间还有一部分数据呢
- 3楼网友:拜訪者
- 2021-01-02 11:35
最后那个00不是毫秒,是秒.8时19分00秒,
convert函数目前还没有可以取消掉秒的方法.可以自己写函数实现
- 4楼网友:刀戟声无边
- 2021-01-02 10:55
FDATE是datetime 类型的值,而该类型可以存储毫秒,如果在毫秒范围类还有值的话这两种查询的结果必然不一样 。'2011-07-18 23:59:59'将转化为'2011-07-18 23:59:59.000',和 '2011-07-18 23:59:59.999'时间范围不一致。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
正方形一边上任一点到这个正方形两条对角线的 |
阴历怎么看 ? |