我建立了一张表bwl 字段如下 bwlbh bwlnr txsj txsj是日期类型
我想写一条sql语句 内容是 查询今天明天后天的数据
我是这样写的
select * from BWL where txsj =(to_char(SYSDATE+3,'YYYY-MM-DD'))
可是这个这是能查询25号的数据
由于刚刚初学Oracle 不知道怎么写了
请各位指教一番 最好把sql语句写出来谢了
我想写一条sql语句 内容是 查询今天明天后天的数据
我是这样写的
select * from BWL where txsj =(to_char(SYSDATE+3,'YYYY-MM-DD'))
可是这个这是能查询25号的数据
由于刚刚初学Oracle 不知道怎么写了
请各位指教一番 最好把sql语句写出来谢了
select
NVL(SUM(CASE WHEN txsj =(to_char(SYSDATE-1,'YYYY-MM-DD'))
THEN
1
ELSE
0
END),
0) yesterday, --昨天
NVL(SUM(CASE WHEN txsj =(to_char(SYSDATE,'YYYY-MM-DD'))
THEN
1
ELSE
0
END),
0) today, --今天
NVL(SUM(CASE WHEN txsj =(to_char(SYSDATE+1,'YYYY-MM-DD'))
THEN
1
ELSE
0
END),
0) tomorrow,--明天
from BWL;
select *
from BWL
where txsj between to_char(sysdate-1,'yyyy-mm-dd') and to_char(sysdate+1,'yyyy-mm-dd')
from BWL
where txsj between to_char(sysdate-1,'yyyy-mm-dd') and to_char(sysdate+1,'yyyy-mm-dd')
group by txsj
order by txsj
基本语法:DECODE的语法:DECODE(value,if1,then1,if2,then2,if3,then3,...,else),表示如果value等于if1时,DECODE函数的结果返回then1,...,如果不等于任何一个if值,则返回else。可以用函数或表达式来替代value,if,then,else从而作出一些更有用的比较。
现在来看你的问题:
alter session set nls_date_format='yyyy-mm-dd';
select decode(to_date(sysdate+3,'yyyy-mm-dd')-to_date(sysdate,'yyyy-mm-dd'),3,b.* 后天数据,b.* 今天的数据) from BWL b;
要是想显示明天就再加个decode的便可以了。
ps:其实你的问题非常值得研究哦。因为,要是这三天不在同一个月,当如何算?不在同一年,当如何?有闰年了,又当如何?在二月份,又该如何?哈哈扯多了,你有兴趣可以去研究一下哈。嗯嗯。。