在oracle中我们可以很容易的得到当前的时间,但是怎样得到过去或者是将来的时间呢,如果吗,我们要把时间一下拉列表的形式显示。就必须用以下的sql语句了。
select trunc(sysdate, 'dd' )- rn + 1 datenumber
from
(select rownum rn from all_objects
where rownum< 32 ) order by datenumber asc ;
这条语句是得到从当天起的过去31天的时间。当然如果我们要在下拉列表中显示第一条数据为空行可以用union来实现。
select ' ' datenumber from dual
union
select trunc(sysdate, 'dd' )- rn + 1 datenumber
from
(select rownum rn from all_objects
where rownum< 32 ) order by datenumber asc ;
这里面需要注意oracle中' '与''的区别。' '代表一个空值,而''则代表为null值。注意rownum 与 all_objects 表的使用。
如果我们想得到时间为字符串类型而不是Datetime类型就可以通过to_char函数来转化。
select to_char(trunc(to_date(to_char(sysdate, 'dd-mm-yyyy' ), 'dd-mm-yyyy' ), 'dd' )+ rn , 'dd-mm-yyyy' ) datenumber from (select rownum rn from all_objects where rownum< 32 )
union
select ' ' datenumber from dual order by datenumber desc ;
所以我们要学会举一反三,灵活使用oracle中常用的函数和特殊表。