SQL Between奇怪的问题。

[复制链接]
查看11 | 回复9 | 2014-2-18 16:48:49 | 显示全部楼层 |阅读模式
本帖最后由 超越神的杀戮 于 2012-12-12 10:01 编辑
我用Between作为筛选的条件。。
但是现在很奇怪。。例如:select *from test where date between &p1 and &p2;
我分别输入p1=2012-01,p2=2012-03
按道理,应该显示1-3的月份的数据,但是现在只显示1-2的。。
然后如果我输入p1=2012-01,p2=2012-04,这时又可显示出1-3。。。。但这情况是应该输出4个月份了。。
为什么啊。。。


回复

使用道具 举报

千问 | 2014-2-18 16:48:49 | 显示全部楼层
我查看了下资料。说是between and在日期中是不包括右边界的?
是这样吗?
回复

使用道具 举报

千问 | 2014-2-18 16:48:49 | 显示全部楼层
你查的什么资料,是oracle的么,怎么会不包括右边界。
你p1 p2的值会被转换为每月1号,你date字段的值都是每月1号么?如果date3月2号,当然不会查出来
回复

使用道具 举报

千问 | 2014-2-18 16:48:49 | 显示全部楼层
看你date的类型啦 哦 大于1号 不能输出的
回复

使用道具 举报

千问 | 2014-2-18 16:48:49 | 显示全部楼层
colin_liu2009 发表于 2012-12-12 10:46
看你date的类型啦 哦 大于1号 不能输出的

我date_date的类型是varchar2的。。。。
回复

使用道具 举报

千问 | 2014-2-18 16:48:49 | 显示全部楼层
关键是里面的数据结构yyyymmdd还是 yyyymm
回复

使用道具 举报

千问 | 2014-2-18 16:48:49 | 显示全部楼层
本帖最后由 超越神的杀戮 于 2012-12-12 11:01 编辑
udfrog 发表于 2012-12-12 10:39
你查的什么资料,是oracle的么,怎么会不包括右边界。
你p1 p2的值会被转换为每月1号,你date字段的值都是 ...

我字段里面的值是这样的,比如。2012-01-30,2012-02-28。
然后我是用substr这个函数把数据截取成2012-01这样的数据。。然后用between.总是不能取到右边界的值。
该怎么解决呢。。建立视图?
回复

使用道具 举报

千问 | 2014-2-18 16:48:49 | 显示全部楼层
colin_liu2009 发表于 2012-12-12 10:56
关键是里面的数据结构yyyymmdd还是 yyyymm

是YYYY-MM-DD的。我用substr截取成yyyymm的格式。
回复

使用道具 举报

千问 | 2014-2-18 16:48:49 | 显示全部楼层
肯定不显示3月的啊,除非是3月1日整点的
回复

使用道具 举报

千问 | 2014-2-18 16:48:49 | 显示全部楼层
超越神的杀戮 发表于 2012-12-12 10:29
我查看了下资料。说是between and在日期中是不包括右边界的?
是这样吗?

包括啊,是你输入的错误
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行