在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中常用的函数和特殊表。
转载于:https://blog.51cto.com/zhjjzhjj/477339