- 浏览: 22746 次
- 性别:
- 来自: 深圳
-
最新评论
Oracle关于时间/日期的操作
Oracle关于时间/日期的操作
1.日期时间间隔操作
当前时间减去7分钟的时间
Java代码
select sysdate,sysdate - interval '7' MINUTE from dual
select sysdate,sysdate - interval '7' MINUTE from dual
当前时间减去7小时的时间
Java代码
select sysdate - interval '7' hour from dual
select sysdate - interval '7' hour from dual
当前时间减去7天的时间
Java代码
select sysdate - interval '7' day from dual
select sysdate - interval '7' day from dual
当前时间减去7月的时间
Java代码
select sysdate,sysdate - interval '7' month from dual
select sysdate,sysdate - interval '7' month from dual
当前时间减去7年的时间
Java代码
select sysdate,sysdate - interval '7' year from dual
select sysdate,sysdate - interval '7' year from dual
时间间隔乘以一个数字
Java代码
select sysdate,sysdate - 8 *interval '2' hour from dual
select sysdate,sysdate - 8 *interval '2' hour from dual
2.日期到字符操作
Java代码
select sysdate,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual
select sysdate,to_char(sysdate,'yyyy-mm-dd hh:mi:ss') from dual
select sysdate,to_char(sysdate,'yyyy-ddd hh:mi:ss') from dual
select sysdate,to_char(sysdate,'yyyy-mm iw-d hh:mi:ss') from dual
select sysdate,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual
select sysdate,to_char(sysdate,'yyyy-mm-dd hh:mi:ss') from dual
select sysdate,to_char(sysdate,'yyyy-ddd hh:mi:ss') from dual
select sysdate,to_char(sysdate,'yyyy-mm iw-d hh:mi:ss') from dual
参考oracle的相关关文档(ORACLE901DOC/SERVER.901/A90125/SQL_ELEMENTS4.HTM#48515)
3. 字符到日期操作
Java代码
select to_date('2003-10-17 21:15:37','yyyy-mm-dd hh24:mi:ss') from dual
select to_date('2003-10-17 21:15:37','yyyy-mm-dd hh24:mi:ss') from dual
具体用法和上面的to_char差不多。
4. trunk/ ROUND函数的使用
Java代码
select trunc(sysdate ,'YEAR') from dual
select trunc(sysdate ) from dual
select to_char(trunc(sysdate ,'YYYY'),'YYYY') from dual
select trunc(sysdate ,'YEAR') from dual
select trunc(sysdate ) from dual
select to_char(trunc(sysdate ,'YYYY'),'YYYY') from dual
5.oracle有毫秒级的数据类型
--返回当前时间 年月日小时分秒毫秒
Java代码
select to_char(current_timestamp(5),'DD-MON-YYYY HH24:MI:SSxFF') from dual;
select to_char(current_timestamp(5),'DD-MON-YYYY HH24:MI:SSxFF') from dual;
--返回当前 时间的秒毫秒,可以指定秒后面的精度(最大=9)
Java代码
select to_char(current_timestamp(9),'MI:SSxFF') from dual;
select to_char(current_timestamp(9),'MI:SSxFF') from dual;
6.计算程序运行的时间(ms)
Java代码
declare
type rc is ref cursor;
l_rc rc;
l_dummy all_objects.object_name%type;
l_start number default dbms_utility.get_time;
begin
for I in 1 .. 1000
loop
open l_rc for
'select object_name from all_objects '||
'where object_id = ' || i;
fetch l_rc into l_dummy;
close l_rc;
end loop;
dbms_output.put_line
( round( (dbms_utility.get_time-l_start)/100, 2 ) ||
' seconds...' );
end;
declare
type rc is ref cursor;
l_rc rc;
l_dummy all_objects.object_name%type;
l_start number default dbms_utility.get_time;
begin
for I in 1 .. 1000
loop
open l_rc for
'select object_name from all_objects '||
'where object_id = ' || i;
fetch l_rc into l_dummy;
close l_rc;
end loop;
dbms_output.put_line
( round( (dbms_utility.get_time-l_start)/100, 2 ) ||
' seconds...' );
end;
7、add_months()用于从一个日期值增加或减少一些月份
1〉获得若干分钟前的时间 Java代码
select sysdate,sysdate - N/(60*24) from dual;
select sysdate,sysdate - N/(60*24) from dual;
或者 Java代码
select sysdate,sysdate - interval 'N' minute from dual
select sysdate,sysdate - interval 'N' minute from dual
2〉获得若干分钟后的时间 sJava代码
elect sysdate,sysdate + N/(60*24) from dual;
elect sysdate,sysdate + N/(60*24) from dual;
或者 Java代码
select sysdate,sysdate + interval 'N' minute from dual
select sysdate,sysdate + interval 'N' minute from dual
注释:"N"表示需要减去或者加上的分钟数
3〉获得若干秒前的时间 sJava代码
elect sysdate,sysdate - N*0.00001 from dual;
elect sysdate,sysdate - N*0.00001 from dual;
或者 Java代码
select sysdate,sysdate - N/(60*60*24) from dual;
select sysdate,sysdate - N/(60*60*24) from dual;
或者 Java代码
select sysdate,sysdate - interval 'N' second from dual
select sysdate,sysdate - interval 'N' second from dual
4〉获得若干秒后的时间 Java代码
select sysdate,sysdate + N*0.00001 from dual;
select sysdate,sysdate + N*0.00001 from dual;
或者 Java代码
select sysdate,sysdate - N/(60*60*24) from dual;
select sysdate,sysdate - N/(60*60*24) from dual;
或者 Java代码
select sysdate,sysdate + interval 'N' second from dual
select sysdate,sysdate + interval 'N' second from dual
注释:"N"表示需要减去或者加上的秒数
注释:N*0.00001 等价于 N/(60*60*24)
5〉获得若干小时前的时间 Java代码
select sysdate,sysdate - N*/24 from dual;
select sysdate,sysdate - N*/24 from dual;
或者 Java代码
select sysdate,sysdate - interval 'N' hour from dual
select sysdate,sysdate - interval 'N' hour from dual
6〉获得若干小时后的时间Java代码
select sysdate,sysdate + N*/24 from dual;
select sysdate,sysdate + N*/24 from dual;
或者 Java代码
select sysdate,sysdate + interval 'N' hour from dual
select sysdate,sysdate + interval 'N' hour from dual
注释:"N"表示需要减去或者加上的小时数
7〉获得若干月之后同一时间 Java代码
select sysdate,add_months(sysdate,N) from dual;
select sysdate,add_months(sysdate,N) from dual;
或者 Java代码
select sysdate,sysdate + interval 'N' month from dual
select sysdate,sysdate + interval 'N' month from dual
8〉获得若干月之前的同一时间 Java代码
select sysdate,add_months(sysdate,-N) from dual;
select sysdate,add_months(sysdate,-N) from dual;
或者 Java代码
select sysdate,sysdate - interval 'N' month from dual
select sysdate,sysdate - interval 'N' month from dual
注释:"N"表示需要减去或者加上的月数
9〉获得某个日期所在月份的第一天 Java代码
select sysdate,trunc(sysdate,'mm') from dual;
select sysdate,trunc(sysdate,'mm') from dual;
10〉获得某个日期所在年的第一天 Java代码
select sysdate,trunc(sysdate,'yyyy') from dual;
select sysdate,trunc(sysdate,'yyyy') from dual;
或者 Java代码
select sysdate,to_date(to_char((to_number(to_char(sysdate,'yyyy')) * 100 + 1) * 100 + 1),'yyyymmdd') from dual
select sysdate,to_date(to_char((to_number(to_char(sysdate,'yyyy')) * 100 + 1) * 100 + 1),'yyyymmdd') from dual
11〉获得某个日期所在年的最后一天 Java代码
select sysdate,to_date((to_char(sysdate,'yyyy') || '1231'),'yyyymmdd') from dual;
select sysdate,to_date((to_char(sysdate,'yyyy') || '1231'),'yyyymmdd') from dual;
或者 Java代码
select sysdate,to_date(to_char((to_number(to_char(sysdate,'yyyy'))* 100 + 12) * 100 + 31),'yyyymmdd') from dual
select sysdate,to_date(to_char((to_number(to_char(sysdate,'yyyy'))* 100 + 12) * 100 + 31),'yyyymmdd') from dual
12〉获得某个日期所在月份的最后一天 Java代码
select sysdate,last_day(sysdate) from dual;
select sysdate,last_day(sysdate) from dual;
13〉获得两个日期之间的时数 Java代码
select t.intime,t.outtime,trunc(24*(t.outtime-t.intime)) from hr_carding t
select t.intime,t.outtime,trunc(24*(t.outtime-t.intime)) from hr_carding t
14〉获得两个日期之间的天数 Java代码
select t.begintime,t.endtime,trunc(t.endtime-t.begintime) from hr_absence t
select t.begintime,t.endtime,trunc(t.endtime-t.begintime) from hr_absence t
15〉获得若干天前的时间 sJava代码
elect sysdate,sysdate - N from dual;
elect sysdate,sysdate - N from dual;
或者 Java代码
select sysdate,sysdate - interval 'N' day from dual
select sysdate,sysdate - interval 'N' day from dual
16〉获得若干天后的时间 Java代码
select sysdate,sysdate + N from dual;
select sysdate,sysdate + N from dual;
或者 Java代码
select sysdate,sysdate + interval 'N' day from dual
select sysdate,sysdate + interval 'N' day from dual
注释:"N"表示需要减去或者加上的天数
17〉获得若干年前的时间 Java代码
select sysdate,add_months(sysdate,-12*N) from dual;
select sysdate,add_months(sysdate,-12*N) from dual;
或者 Java代码
select sysdate,sysdate - interval 'N' year from dual
select sysdate,sysdate - interval 'N' year from dual
16〉获得若干年后的时间 Java代码
select sysdate,add_months(sysdate,12*N) from dual;
select sysdate,add_months(sysdate,12*N) from dual;
或者 Java代码
select sysdate,sysdate + interval 'N' year from dual
select sysdate,sysdate + interval 'N' year from dual
注释:"N"表示需要减去或者加上的年数
17〉相隔若干小时的时间 Java代码
select sysdate,sysdate - M * interval 'N' hour from dual
select sysdate,sysdate - M * interval 'N' hour from dual
18〉检索出某一个日期所在月份的所有天信息
Java代码
select trunc(to_date('X','yyyymmdd'),'mm') from dual
union all
select trunc(to_date('X','yyyymmdd'),'mm') + rownum from dual
connect by rownum <= (last_day(to_date('X','yyyymmdd')) - trunc(to_date('X','yyyymmdd'),'mm'))
select trunc(to_date('X','yyyymmdd'),'mm') from dual
union all
select trunc(to_date('X','yyyymmdd'),'mm') + rownum from dual
connect by rownum <= (last_day(to_date('X','yyyymmdd')) - trunc(to_date('X','yyyymmdd'),'mm'))
或者
Java代码
select first + rownum - 1 myday
from (select trunc(to_date('X','yyyymmdd'),'MM') first,trunc(last_day(to_date('X','yyyymmdd'))) last from dual)
connect by rownum <= last - first + 1
select first + rownum - 1 myday
from (select trunc(to_date('X','yyyymmdd'),'MM') first,trunc(last_day(to_date('X','yyyymmdd'))) last from dual)
connect by rownum <= last - first + 1
其中:字符串'X'表示某一个日期
19〉怎样知道今天是星期几
Java代码
select to_char(sysdate,'day') from dual;
select to_char(sysdate,'day') from dual;
在获取之前可以设置日期语言,如:
Java代码
ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';
ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';
还可以在函数中指定
Java代码
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = AMERICAN') from dual;
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = AMERICAN') from dual;
其它更多用法,可以参考to_char与to_date函数
20〉本月的天数
Java代码
SELECT to_char(last_day(SYSDATE),'dd') days FROM dual
SELECT to_char(last_day(SYSDATE),'dd') days FROM dual
21〉今年的天数
Java代码
select add_months(trunc(sysdate, 'year'), 12) - trunc(sysdate, 'year') /*下一年的第一天减去今年的第一天*/
from dual
select add_months(trunc(sysdate, 'year'), 12) - trunc(sysdate, 'year') /*下一年的第一天减去今年的第一天*/
from dual
22〉下个星期一的日期
Java代码
SELECT Next_day(SYSDATE,'monday') FROM dual
SELECT Next_day(SYSDATE,'monday') FROM dual
23〉怎么样从数据库中获得毫秒
9i以上版本,有一个timestamp类型获得毫秒,如
Java代码
select to_char(systimestamp ,'yyyy-mm-dd hh24:mi:ssxff') time1,
to_char(current_timestamp,'yyyy-mm-dd hh24:mi:ssxff') time2
from dual;
select to_char(systimestamp ,'yyyy-mm-dd hh24:mi:ssxff') time1,
to_char(current_timestamp,'yyyy-mm-dd hh24:mi:ssxff') time2
from dual;
24〉检索某一年度的日历表:
Java代码
select case
when (new_yweek = min(new_yweek)
over(partition by mon order by new_yweek)) then
mon
else
null
end as mon,
new_yweek as yweek,
row_number() over(partition by mon order by new_yweek) as mweek,
sum(decode(wday, '1', mday, null)) as sunday,
sum(decode(wday, '2', mday, null)) as monday,
sum(decode(wday, '3', mday, null)) as tuesday,
sum(decode(wday, '4', mday, null)) as wednesday,
sum(decode(wday, '5', mday, null)) as thursday,
sum(decode(wday, '6', mday, null)) as friday,
sum(decode(wday, '7', mday, null)) as saturday,
&year as year
from (select to_date(&year || '0101', 'yyyymmdd') + rownum - 1 as everyday,
to_char(to_date(&year || '0101', 'yyyymmdd') + rownum - 1,
'mm') as mon,
to_char(to_date(&year || '0101', 'yyyymmdd') + rownum - 1,
'w') as mweek,
to_char(to_date(&year || '0101', 'yyyymmdd') + rownum - 1,
'ww') as yweek,
case
when (to_char(to_date(&year || '0101', 'yyyymmdd'), 'd') > '1') and
(to_char(to_date(&year || '0101', 'yyyymmdd') + rownum - 1,
'd') <
to_char(to_date(&year || '0101', 'yyyymmdd'), 'd')) then
to_char(to_char(to_date(&year || '0101', 'yyyymmdd') +
rownum - 1,
'ww') + 1,
'fm00')
else
to_char(to_date(&year || '0101', 'yyyymmdd') + rownum - 1,
'ww')
end as new_yweek,
to_char(to_date(&year || '0101', 'yyyymmdd') + rownum - 1,
'd') as wday,
to_char(to_date(&year || '0101', 'yyyymmdd') + rownum - 1,
'dd') as mday
from (select rownum r from dual connect by rownum <= 366)
where rownum <=
to_char(to_date(&year || '1231', 'yyyymmdd'), 'ddd'))
group by mon, new_yweek
1.日期时间间隔操作
当前时间减去7分钟的时间
Java代码
select sysdate,sysdate - interval '7' MINUTE from dual
select sysdate,sysdate - interval '7' MINUTE from dual
当前时间减去7小时的时间
Java代码
select sysdate - interval '7' hour from dual
select sysdate - interval '7' hour from dual
当前时间减去7天的时间
Java代码
select sysdate - interval '7' day from dual
select sysdate - interval '7' day from dual
当前时间减去7月的时间
Java代码
select sysdate,sysdate - interval '7' month from dual
select sysdate,sysdate - interval '7' month from dual
当前时间减去7年的时间
Java代码
select sysdate,sysdate - interval '7' year from dual
select sysdate,sysdate - interval '7' year from dual
时间间隔乘以一个数字
Java代码
select sysdate,sysdate - 8 *interval '2' hour from dual
select sysdate,sysdate - 8 *interval '2' hour from dual
2.日期到字符操作
Java代码
select sysdate,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual
select sysdate,to_char(sysdate,'yyyy-mm-dd hh:mi:ss') from dual
select sysdate,to_char(sysdate,'yyyy-ddd hh:mi:ss') from dual
select sysdate,to_char(sysdate,'yyyy-mm iw-d hh:mi:ss') from dual
select sysdate,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual
select sysdate,to_char(sysdate,'yyyy-mm-dd hh:mi:ss') from dual
select sysdate,to_char(sysdate,'yyyy-ddd hh:mi:ss') from dual
select sysdate,to_char(sysdate,'yyyy-mm iw-d hh:mi:ss') from dual
参考oracle的相关关文档(ORACLE901DOC/SERVER.901/A90125/SQL_ELEMENTS4.HTM#48515)
3. 字符到日期操作
Java代码
select to_date('2003-10-17 21:15:37','yyyy-mm-dd hh24:mi:ss') from dual
select to_date('2003-10-17 21:15:37','yyyy-mm-dd hh24:mi:ss') from dual
具体用法和上面的to_char差不多。
4. trunk/ ROUND函数的使用
Java代码
select trunc(sysdate ,'YEAR') from dual
select trunc(sysdate ) from dual
select to_char(trunc(sysdate ,'YYYY'),'YYYY') from dual
select trunc(sysdate ,'YEAR') from dual
select trunc(sysdate ) from dual
select to_char(trunc(sysdate ,'YYYY'),'YYYY') from dual
5.oracle有毫秒级的数据类型
--返回当前时间 年月日小时分秒毫秒
Java代码
select to_char(current_timestamp(5),'DD-MON-YYYY HH24:MI:SSxFF') from dual;
select to_char(current_timestamp(5),'DD-MON-YYYY HH24:MI:SSxFF') from dual;
--返回当前 时间的秒毫秒,可以指定秒后面的精度(最大=9)
Java代码
select to_char(current_timestamp(9),'MI:SSxFF') from dual;
select to_char(current_timestamp(9),'MI:SSxFF') from dual;
6.计算程序运行的时间(ms)
Java代码
declare
type rc is ref cursor;
l_rc rc;
l_dummy all_objects.object_name%type;
l_start number default dbms_utility.get_time;
begin
for I in 1 .. 1000
loop
open l_rc for
'select object_name from all_objects '||
'where object_id = ' || i;
fetch l_rc into l_dummy;
close l_rc;
end loop;
dbms_output.put_line
( round( (dbms_utility.get_time-l_start)/100, 2 ) ||
' seconds...' );
end;
declare
type rc is ref cursor;
l_rc rc;
l_dummy all_objects.object_name%type;
l_start number default dbms_utility.get_time;
begin
for I in 1 .. 1000
loop
open l_rc for
'select object_name from all_objects '||
'where object_id = ' || i;
fetch l_rc into l_dummy;
close l_rc;
end loop;
dbms_output.put_line
( round( (dbms_utility.get_time-l_start)/100, 2 ) ||
' seconds...' );
end;
7、add_months()用于从一个日期值增加或减少一些月份
1〉获得若干分钟前的时间 Java代码
select sysdate,sysdate - N/(60*24) from dual;
select sysdate,sysdate - N/(60*24) from dual;
或者 Java代码
select sysdate,sysdate - interval 'N' minute from dual
select sysdate,sysdate - interval 'N' minute from dual
2〉获得若干分钟后的时间 sJava代码
elect sysdate,sysdate + N/(60*24) from dual;
elect sysdate,sysdate + N/(60*24) from dual;
或者 Java代码
select sysdate,sysdate + interval 'N' minute from dual
select sysdate,sysdate + interval 'N' minute from dual
注释:"N"表示需要减去或者加上的分钟数
3〉获得若干秒前的时间 sJava代码
elect sysdate,sysdate - N*0.00001 from dual;
elect sysdate,sysdate - N*0.00001 from dual;
或者 Java代码
select sysdate,sysdate - N/(60*60*24) from dual;
select sysdate,sysdate - N/(60*60*24) from dual;
或者 Java代码
select sysdate,sysdate - interval 'N' second from dual
select sysdate,sysdate - interval 'N' second from dual
4〉获得若干秒后的时间 Java代码
select sysdate,sysdate + N*0.00001 from dual;
select sysdate,sysdate + N*0.00001 from dual;
或者 Java代码
select sysdate,sysdate - N/(60*60*24) from dual;
select sysdate,sysdate - N/(60*60*24) from dual;
或者 Java代码
select sysdate,sysdate + interval 'N' second from dual
select sysdate,sysdate + interval 'N' second from dual
注释:"N"表示需要减去或者加上的秒数
注释:N*0.00001 等价于 N/(60*60*24)
5〉获得若干小时前的时间 Java代码
select sysdate,sysdate - N*/24 from dual;
select sysdate,sysdate - N*/24 from dual;
或者 Java代码
select sysdate,sysdate - interval 'N' hour from dual
select sysdate,sysdate - interval 'N' hour from dual
6〉获得若干小时后的时间Java代码
select sysdate,sysdate + N*/24 from dual;
select sysdate,sysdate + N*/24 from dual;
或者 Java代码
select sysdate,sysdate + interval 'N' hour from dual
select sysdate,sysdate + interval 'N' hour from dual
注释:"N"表示需要减去或者加上的小时数
7〉获得若干月之后同一时间 Java代码
select sysdate,add_months(sysdate,N) from dual;
select sysdate,add_months(sysdate,N) from dual;
或者 Java代码
select sysdate,sysdate + interval 'N' month from dual
select sysdate,sysdate + interval 'N' month from dual
8〉获得若干月之前的同一时间 Java代码
select sysdate,add_months(sysdate,-N) from dual;
select sysdate,add_months(sysdate,-N) from dual;
或者 Java代码
select sysdate,sysdate - interval 'N' month from dual
select sysdate,sysdate - interval 'N' month from dual
注释:"N"表示需要减去或者加上的月数
9〉获得某个日期所在月份的第一天 Java代码
select sysdate,trunc(sysdate,'mm') from dual;
select sysdate,trunc(sysdate,'mm') from dual;
10〉获得某个日期所在年的第一天 Java代码
select sysdate,trunc(sysdate,'yyyy') from dual;
select sysdate,trunc(sysdate,'yyyy') from dual;
或者 Java代码
select sysdate,to_date(to_char((to_number(to_char(sysdate,'yyyy')) * 100 + 1) * 100 + 1),'yyyymmdd') from dual
select sysdate,to_date(to_char((to_number(to_char(sysdate,'yyyy')) * 100 + 1) * 100 + 1),'yyyymmdd') from dual
11〉获得某个日期所在年的最后一天 Java代码
select sysdate,to_date((to_char(sysdate,'yyyy') || '1231'),'yyyymmdd') from dual;
select sysdate,to_date((to_char(sysdate,'yyyy') || '1231'),'yyyymmdd') from dual;
或者 Java代码
select sysdate,to_date(to_char((to_number(to_char(sysdate,'yyyy'))* 100 + 12) * 100 + 31),'yyyymmdd') from dual
select sysdate,to_date(to_char((to_number(to_char(sysdate,'yyyy'))* 100 + 12) * 100 + 31),'yyyymmdd') from dual
12〉获得某个日期所在月份的最后一天 Java代码
select sysdate,last_day(sysdate) from dual;
select sysdate,last_day(sysdate) from dual;
13〉获得两个日期之间的时数 Java代码
select t.intime,t.outtime,trunc(24*(t.outtime-t.intime)) from hr_carding t
select t.intime,t.outtime,trunc(24*(t.outtime-t.intime)) from hr_carding t
14〉获得两个日期之间的天数 Java代码
select t.begintime,t.endtime,trunc(t.endtime-t.begintime) from hr_absence t
select t.begintime,t.endtime,trunc(t.endtime-t.begintime) from hr_absence t
15〉获得若干天前的时间 sJava代码
elect sysdate,sysdate - N from dual;
elect sysdate,sysdate - N from dual;
或者 Java代码
select sysdate,sysdate - interval 'N' day from dual
select sysdate,sysdate - interval 'N' day from dual
16〉获得若干天后的时间 Java代码
select sysdate,sysdate + N from dual;
select sysdate,sysdate + N from dual;
或者 Java代码
select sysdate,sysdate + interval 'N' day from dual
select sysdate,sysdate + interval 'N' day from dual
注释:"N"表示需要减去或者加上的天数
17〉获得若干年前的时间 Java代码
select sysdate,add_months(sysdate,-12*N) from dual;
select sysdate,add_months(sysdate,-12*N) from dual;
或者 Java代码
select sysdate,sysdate - interval 'N' year from dual
select sysdate,sysdate - interval 'N' year from dual
16〉获得若干年后的时间 Java代码
select sysdate,add_months(sysdate,12*N) from dual;
select sysdate,add_months(sysdate,12*N) from dual;
或者 Java代码
select sysdate,sysdate + interval 'N' year from dual
select sysdate,sysdate + interval 'N' year from dual
注释:"N"表示需要减去或者加上的年数
17〉相隔若干小时的时间 Java代码
select sysdate,sysdate - M * interval 'N' hour from dual
select sysdate,sysdate - M * interval 'N' hour from dual
18〉检索出某一个日期所在月份的所有天信息
Java代码
select trunc(to_date('X','yyyymmdd'),'mm') from dual
union all
select trunc(to_date('X','yyyymmdd'),'mm') + rownum from dual
connect by rownum <= (last_day(to_date('X','yyyymmdd')) - trunc(to_date('X','yyyymmdd'),'mm'))
select trunc(to_date('X','yyyymmdd'),'mm') from dual
union all
select trunc(to_date('X','yyyymmdd'),'mm') + rownum from dual
connect by rownum <= (last_day(to_date('X','yyyymmdd')) - trunc(to_date('X','yyyymmdd'),'mm'))
或者
Java代码
select first + rownum - 1 myday
from (select trunc(to_date('X','yyyymmdd'),'MM') first,trunc(last_day(to_date('X','yyyymmdd'))) last from dual)
connect by rownum <= last - first + 1
select first + rownum - 1 myday
from (select trunc(to_date('X','yyyymmdd'),'MM') first,trunc(last_day(to_date('X','yyyymmdd'))) last from dual)
connect by rownum <= last - first + 1
其中:字符串'X'表示某一个日期
19〉怎样知道今天是星期几
Java代码
select to_char(sysdate,'day') from dual;
select to_char(sysdate,'day') from dual;
在获取之前可以设置日期语言,如:
Java代码
ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';
ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';
还可以在函数中指定
Java代码
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = AMERICAN') from dual;
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = AMERICAN') from dual;
其它更多用法,可以参考to_char与to_date函数
20〉本月的天数
Java代码
SELECT to_char(last_day(SYSDATE),'dd') days FROM dual
SELECT to_char(last_day(SYSDATE),'dd') days FROM dual
21〉今年的天数
Java代码
select add_months(trunc(sysdate, 'year'), 12) - trunc(sysdate, 'year') /*下一年的第一天减去今年的第一天*/
from dual
select add_months(trunc(sysdate, 'year'), 12) - trunc(sysdate, 'year') /*下一年的第一天减去今年的第一天*/
from dual
22〉下个星期一的日期
Java代码
SELECT Next_day(SYSDATE,'monday') FROM dual
SELECT Next_day(SYSDATE,'monday') FROM dual
23〉怎么样从数据库中获得毫秒
9i以上版本,有一个timestamp类型获得毫秒,如
Java代码
select to_char(systimestamp ,'yyyy-mm-dd hh24:mi:ssxff') time1,
to_char(current_timestamp,'yyyy-mm-dd hh24:mi:ssxff') time2
from dual;
select to_char(systimestamp ,'yyyy-mm-dd hh24:mi:ssxff') time1,
to_char(current_timestamp,'yyyy-mm-dd hh24:mi:ssxff') time2
from dual;
24〉检索某一年度的日历表:
Java代码
select case
when (new_yweek = min(new_yweek)
over(partition by mon order by new_yweek)) then
mon
else
null
end as mon,
new_yweek as yweek,
row_number() over(partition by mon order by new_yweek) as mweek,
sum(decode(wday, '1', mday, null)) as sunday,
sum(decode(wday, '2', mday, null)) as monday,
sum(decode(wday, '3', mday, null)) as tuesday,
sum(decode(wday, '4', mday, null)) as wednesday,
sum(decode(wday, '5', mday, null)) as thursday,
sum(decode(wday, '6', mday, null)) as friday,
sum(decode(wday, '7', mday, null)) as saturday,
&year as year
from (select to_date(&year || '0101', 'yyyymmdd') + rownum - 1 as everyday,
to_char(to_date(&year || '0101', 'yyyymmdd') + rownum - 1,
'mm') as mon,
to_char(to_date(&year || '0101', 'yyyymmdd') + rownum - 1,
'w') as mweek,
to_char(to_date(&year || '0101', 'yyyymmdd') + rownum - 1,
'ww') as yweek,
case
when (to_char(to_date(&year || '0101', 'yyyymmdd'), 'd') > '1') and
(to_char(to_date(&year || '0101', 'yyyymmdd') + rownum - 1,
'd') <
to_char(to_date(&year || '0101', 'yyyymmdd'), 'd')) then
to_char(to_char(to_date(&year || '0101', 'yyyymmdd') +
rownum - 1,
'ww') + 1,
'fm00')
else
to_char(to_date(&year || '0101', 'yyyymmdd') + rownum - 1,
'ww')
end as new_yweek,
to_char(to_date(&year || '0101', 'yyyymmdd') + rownum - 1,
'd') as wday,
to_char(to_date(&year || '0101', 'yyyymmdd') + rownum - 1,
'dd') as mday
from (select rownum r from dual connect by rownum <= 366)
where rownum <=
to_char(to_date(&year || '1231', 'yyyymmdd'), 'ddd'))
group by mon, new_yweek
相关推荐
Oracle 时间日期操作 Oracle 时间日期操作是 Oracle 数据库中的一种常用的操作类型,它可以对数据库中的日期和时间进行各种处理和计算。以下是 Oracle 时间日期操作的一些常见知识点: 1. 获取当前日期和时间:...
### Oracle日期时间数据类型与时间间隔数据类型详解 ...以上就是Oracle数据库中关于日期时间数据类型及时间间隔数据类型的详细介绍。通过这些数据类型和相关的操作,可以高效地管理和处理日期时间数据。
在Oracle数据库系统中,日期和时间的处理是数据库操作中的重要组成部分。Oracle提供了丰富的日期时间函数,用于处理和分析日期时间数据。针对标题"oracle日期时间判断函数"和描述中提到的内容,我们可以深入探讨两个...
DATEADD 函数是 Oracle 日期处理函数中非常重要的一部分,它可以方便地添加指定的时间间隔到日期中,并且可以应用于各种日期处理场景。然而,DATEADD 函数也存在一些限制,例如只能添加指定的时间间隔到日期中,不能...
### Oracle 日期操作详解 #### 一、日期时间间隔操作 在Oracle数据库中,我们可以方便地执行日期时间的间隔操作,比如对当前时间进行增减指定的时间间隔。 **1. 当前时间减去7分钟的时间** ```sql SELECT SYSDATE...
Oracle 日期及时间格式是 Oracle 编程语言中一个重要的组成部分,了解 Oracle 日期及时间格式可以帮助开发者更好地处理日期及时间相关的操作。在 Oracle 中,日期及时间格式可以通过使用 TO_CHAR 函数来实现,该函数...
在Oracle数据库中,日期时间(DateTime)操作是数据管理和查询中的关键部分,涉及到对日期、时间的处理,包括但不限于加减、格式化、比较等。本文将深入解析Oracle日期时间操作的一些核心知识点,涵盖基本的日期时间...
在某些场景下,可能需要对日期进行截取操作,例如仅保留日期部分而忽略时间部分。可以通过设置最后三个字节为12121来实现。下面的示例展示了如何创建一个新的表`test_date1`并插入不同粒度的日期时间值。 ```sql ...
oracle 日期时间操作,oracle 日期时间
在Oracle数据库中,日期操作是常见的SQL查询任务,特别是在处理历史数据或进行时间相关的分析时。Oracle提供了丰富的函数来帮助用户对日期进行加减操作,这些功能强大且灵活的函数使得开发者能更精确地处理时间数据...
2. **数据类型**:PL/SQL支持多种数据类型,包括数值类型(如NUMBER)、字符串类型(如VARCHAR2、CHAR)、日期时间类型(如DATE)、布尔类型(BOOLEAN)以及复合数据类型(如记录和数组)。 3. **变量声明和赋值**...
在"查询oracle时间段操作.txt"文件中,可能包含了具体的SQL查询示例、快照创建步骤和闪回功能的使用指南,以及关于如何有效利用这些工具进行数据恢复和分析的详细说明。阅读这份文件将进一步加深你对Oracle时间段...
在Oracle数据库中,可以通过`SYSDATE`函数来获取系统的当前日期和时间。这是一个非常实用的功能,尤其是在需要记录数据的操作时间点时。 **示例:** ```sql SELECT SYSDATE FROM DUAL; ``` 这条SQL语句将返回当前的...
根据提供的文件内容,本文将详细解析Oracle数据库中与日期时间处理相关的知识点,包括日期格式转换、日期计算以及一些实用的日期函数用法等。 ### Oracle日期时间处理概述 Oracle数据库提供了丰富的日期时间处理...
Oracle数据库系统提供了丰富的日期时间函数,用于处理和操作日期时间数据。这些函数在数据库查询、数据分析和报表生成中起着至关重要的作用。以下是一些主要的Oracle日期时间函数及其用法: 1. **日期和字符转换...
在Oracle数据库中,日期是数据处理的核心部分,无论是记录事务发生的时间、设定时间窗口进行数据分析,还是设置基于时间的触发器,都离不开对日期的查询和操作。本篇将深入探讨Oracle关于日期的查询语句及其相关知识...