总得干正事--工作相关
杂藏吧
全部回复
仅看楼主
level 6
givesomething 楼主
。。。。
我不热爱工作,但我更加不热爱 没工作。。
so  工作还是要好好做
2009年04月16日 04点04分 1
level 6
givesomething 楼主
2009年04月20日 09点04分 2
level 6
givesomething 楼主
2009年04月20日 09点04分 3
level 6
givesomething 楼主
2009年04月20日 11点04分 4
level 6
givesomething 楼主
以上都是 关于 oracle 中 时间 日期 的 取法。。
4 楼最全最详细。。。记得搬过来
2009年04月20日 11点04分 5
level 6
givesomething 楼主
PL/SQL中关于时间的操作 
=========================================================== 
作者: zhanglinye(http://zhanglinye.itpub.net)
发表于: 2007.07.13 11:33
分类: PL/SQL开发 
出处: http://zhanglinye.itpub.net/post/8929/307554
--------------------------------------------------------------- 
1〉获得若干分钟前的时间 select sysdate,sysdate - N/(60*24) from dual;
或者 select sysdate,sysdate - interval 'N' minute from dual
2〉获得若干分钟后的时间 select sysdate,sysdate + N/(60*24) from dual;
或者 select sysdate,sysdate + interval 'N' minute from dual
注释:"N"表示需要减去或者加上的分钟数
3〉获得若干秒前的时间 select sysdate,sysdate - N*0.00001 from dual;
或者 select sysdate,sysdate - N/(60*60*24) from dual;
或者 select sysdate,sysdate - interval 'N' second from dual 
4〉获得若干秒后的时间 select sysdate,sysdate + N*0.00001 from dual;
或者 select sysdate,sysdate - N/(60*60*24) from dual;
或者 select sysdate,sysdate + interval 'N' second from dual
注释:"N"表示需要减去或者加上的秒数
注释:N*0.00001 等价于 N/(60*60*24) 
5〉获得若干小时前的时间 select sysdate,sysdate - N*/24 from dual;
或者 select sysdate,sysdate - interval 'N' hour from dual
6〉获得若干小时后的时间 select sysdate,sysdate + N*/24 from dual;
或者 select sysdate,sysdate + interval 'N' hour from dual
注释:"N"表示需要减去或者加上的小时数
7〉获得若干月之后同一时间 select sysdate,add_months(sysdate,N) from dual;
或者 select sysdate,sysdate + interval 'N' month from dual
8〉获得若干月之前的同一时间 select sysdate,add_months(sysdate,-N) from dual;
或者 select sysdate,sysdate - interval 'N' month from dual
注释:"N"表示需要减去或者加上的月数
9〉获得某个日期所在月份的第一天 select sysdate,trunc(sysdate,'mm') from dual;
10〉获得某个日期所在年的第一天 select sysdate,trunc(sysdate,'yyyy') from dual;
或者 select sysdate,to_date(to_char((to_number(to_char(sysdate,'yyyy')) * 100 + 1) * 100 + 1),'yyyymmdd') from dual

2009年04月20日 13点04分 6
level 6
givesomething 楼主

11〉获得某个日期所在年的最后一天 select sysdate,to_date((to_char(sysdate,'yyyy') || '1231'),'yyyymmdd') from dual;
或者 select sysdate,to_date(to_char((to_number(to_char(sysdate,'yyyy'))* 100 + 12) * 100 + 31),'yyyymmdd') from dual
12〉获得某个日期所在月份的最后一天 select sysdate,last_day(sysdate) from dual;
13〉获得两个日期之间的时数 select t.intime,t.outtime,trunc(24*(t.outtime-t.intime)) from hr_carding t
14〉获得两个日期之间的天数 select t.begintime,t.endtime,trunc(t.endtime-t.begintime) from hr_absence t
15〉获得若干天前的时间 select sysdate,sysdate - N from dual;
或者 select sysdate,sysdate - interval 'N' day from dual
16〉获得若干天后的时间 select sysdate,sysdate + N from dual;
或者 select sysdate,sysdate + interval 'N' day from dual
注释:"N"表示需要减去或者加上的天数
17〉获得若干年前的时间 select sysdate,add_months(sysdate,-12*N) from dual;
或者 select sysdate,sysdate - interval 'N' year from dual
16〉获得若干年后的时间 select sysdate,add_months(sysdate,12*N) from dual;
或者 select sysdate,sysdate + interval 'N' year from dual
注释:"N"表示需要减去或者加上的年数
17〉相隔若干小时的时间 select sysdate,sysdate - M * interval 'N' hour from dual 
18〉检索出某一个日期所在月份的所有天信息
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 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〉怎样知道今天是星期几
select to_char(sysdate,'day') from dual; 
在获取之前可以设置日期语言,如:
ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';
还可以在函数中指定
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = AMERICAN') from dual; 

2009年04月20日 13点04分 7
level 6
givesomething 楼主
其它更多用法,可以参考to_char与to_date函数
20〉本月的天数
SELECT to_char(last_day(SYSDATE),'dd') days FROM dual
21〉今年的天数 
select add_months(trunc(sysdate, 'year'), 12) - trunc(sysdate, 'year') /*下一年的第一天减去今年的第一天*/
from dual
22〉下个星期一的日期
SELECT Next_day(SYSDATE,'monday') FROM dual
23〉怎么样从数据库中获得毫秒
9i以上版本,有一个timestamp类型获得毫秒,如
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〉检索某一年度的日历表(转载):
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 
zhanglinye 发表于:2007.07.13 11:33 ::分类: ( PL/SQL开发 ) ::阅读:(460次) :: 评论 (0)
2009年04月20日 13点04分 8
level 6
givesomething 楼主
2009年04月23日 02点04分 9
level 6
givesomething 楼主
2009年04月23日 02点04分 10
level 6
givesomething 楼主
2009年04月23日 02点04分 11
level 6
givesomething 楼主
以上两楼是 oracle 中 goto 用法
2009年04月23日 02点04分 12
level 6
givesomething 楼主
2009年04月23日 09点04分 13
level 6
givesomething 楼主
http://blog.sina.com.cn/s/blog_3d9046030100cig8.html 
关于数据库中 临时表的
2009年04月23日 09点04分 14
level 5
select to_char(trunc(to_date('20090528', 'yyyymmdd') + 1), 'yyyymmdd') into vnextday from dual;
 select to_char(trunc(to_date('20090528', 'yyyymmdd') - 1), 'yyyymmdd') into vlastday from dual;
2009年05月29日 12点05分 15
level 5
2009年07月27日 03点07分 16
level 5
2009年08月24日 10点08分 17
level 5
2009年08月24日 10点08分 18
1