1.根据日期字符串查询:结果正确,但是日期字段的索引无效
select sum(yse.fmonthamount) famount from t_ryy_tjlbyusuan ys INNER JOIN t_ryy_jbtjlb lb ON ys.ftjlbid = lb.fid
INNER JOIN t_ryy_tjlbyusuanentry yse ON ys.fid = yse.fparentid
WHERE lb.ffname = temp.fcusid AND to_char(yse.ffdate,'yyyy-mm-dd') = to_char(fdate,'yyyy-mm-dd')
GROUP BY lb.ffname
2.根据日期范围查询:索引有效但是,结果不正确
select sum(yse.fmonthamount) famount from t_ryy_tjlbyusuan ys INNER JOIN t_ryy_jbtjlb lb ON ys.ftjlbid = lb.fid
INNER JOIN t_ryy_tjlbyusuanentry yse ON ys.fid = yse.fparentid
WHERE lb.ffname = temp.fcusid AND yse.ffdate > fdate-1 AND yse.ffdate < fdate+1
GROUP BY lb.ffname
不正确原因:yse.ffdate > fdate-1 会将当天中午12点以后的数据查处,yse.ffdate < fdate+1 同理
举例:fdate = to_date('2008-05-02','yyyy-mm-dd')
1. yse.ffdate :01-5月 -08 03.12.49.796000 下午
yse>fdate-1 :为真2. yse.ffdate :01-5月 -08 12.00.00.000000 上午
yse>fdate-1 :为假各位有没有遇到类似的问题,请指教。多谢
select sum(yse.fmonthamount) famount from t_ryy_tjlbyusuan ys INNER JOIN t_ryy_jbtjlb lb ON ys.ftjlbid = lb.fid
INNER JOIN t_ryy_tjlbyusuanentry yse ON ys.fid = yse.fparentid
WHERE lb.ffname = temp.fcusid AND to_char(yse.ffdate,'yyyy-mm-dd') = to_char(fdate,'yyyy-mm-dd')
GROUP BY lb.ffname
2.根据日期范围查询:索引有效但是,结果不正确
select sum(yse.fmonthamount) famount from t_ryy_tjlbyusuan ys INNER JOIN t_ryy_jbtjlb lb ON ys.ftjlbid = lb.fid
INNER JOIN t_ryy_tjlbyusuanentry yse ON ys.fid = yse.fparentid
WHERE lb.ffname = temp.fcusid AND yse.ffdate > fdate-1 AND yse.ffdate < fdate+1
GROUP BY lb.ffname
不正确原因:yse.ffdate > fdate-1 会将当天中午12点以后的数据查处,yse.ffdate < fdate+1 同理
举例:fdate = to_date('2008-05-02','yyyy-mm-dd')
1. yse.ffdate :01-5月 -08 03.12.49.796000 下午
yse>fdate-1 :为真2. yse.ffdate :01-5月 -08 12.00.00.000000 上午
yse>fdate-1 :为假各位有没有遇到类似的问题,请指教。多谢
INNER JOIN t_ryy_tjlbyusuanentry yse ON ys.fid = yse.fparentid
WHERE lb.ffname = temp.fcusid AND yse.ffdate=fdate
GROUP BY lb.ffname;
select sum(yse.fmonthamount) famount from t_ryy_tjlbyusuan ys INNER JOIN t_ryy_jbtjlb lb ON ys.ftjlbid = lb.fid
INNER JOIN t_ryy_tjlbyusuanentry yse ON ys.fid = yse.fparentid
WHERE lb.ffname = temp.fcusid AND yse.ffdate=trunc(fdate,'dd')
GROUP BY lb.ffname;
INNER JOIN t_ryy_tjlbyusuanentry yse ON ys.fid = yse.fparentid
WHERE lb.ffname = temp.fcusid AND yse.ffdate = trunc(fdate)
GROUP BY lb.ffname
select lb.ffname,yse.fmonthamount famount,yse.ffdate from t_ryy_tjlbyusuan ys INNER JOIN t_ryy_jbtjlb lb ON ys.ftjlbid = lb.fid
INNER JOIN t_ryy_tjlbyusuanentry yse ON ys.fid = yse.fparentid
WHERE yse.ffdate > trunc(to_date('2008-05-02','yyyy-mm-dd'),'dd') -1
AND yse.ffdate < trunc(to_date('2008-05-02','yyyy-mm-dd'),'dd') +1 lb.ffname famount yse.ffdate
1 正餐 944163.6900000000 02-5月 -08 12.00.00.000000 上午
2 架次 360.0000000000 01-5月 -08 03.12.49.796000 下午
3 架次 360.0000000000 02-5月 -08 03.12.49.796000 下午
4 服务费 223136.4700000000 01-5月 -08 03.18.40.578000 下午
5 服务费 223136.4700000000 02-5月 -08 03.18.40.578000 下午
6 其它 470077.9800000000 01-5月 -08 03.17.32.296000 下午
7 其它 470077.9800000000 02-5月 -08 03.17.32.296000 下午
8 干货 124199.3700000000 01-5月 -08 03.17.55.343000 下午
9 干货 124199.3700000000 02-5月 -08 03.17.55.343000 下午
10 仓租 3311.2000000000 01-5月 -08 03.18.58.265000 下午
11 仓租 3311.2000000000 02-5月 -08 03.18.58.265000 下午
12 配餐量 55000.0000000000 01-5月 -08 03.13.57.453000 下午
13 配餐量 55000.0000000000 02-5月 -08 03.13.57.453000 下午
14 食水 34595.5300000000 01-5月 -08 03.18.15.046000 下午
15 食水 34595.5300000000 02-5月 -08 03.18.15.046000 下午说明:我不想要5月1号的数据。比如查5月1号到5月10号但是不包括1,10号的数据
and to_date('2008-05-09','yyyy-mm-dd')