常用的日期时间处理方法_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 1566 | 回复: 0   主题: 常用的日期时间处理方法        下一篇 
solo9867
注册用户
等级:新兵
经验:61
发帖:71
精华:0
注册:2011-12-15
状态:离线
发送短消息息给solo9867 加好友    发送短消息息给solo9867 发消息
发表于: IP:您无权察看 2015-5-21 10:30:30 | [全部帖] [楼主帖] 楼主

当前时间最接近的刻钟

SELECT trunc(SYSDATE,'hh24'),CASE WHEN to_char(SYSDATE,'mi') <8 THEN 0
WHEN to_char(SYSDATE,'mi') <15 AND to_char(SYSDATE,'mi')>8 THEN 15
WHEN to_char(SYSDATE,'mi') >15 AND to_char(SYSDATE,'mi')<23 THEN 15
WHEN to_char(SYSDATE,'mi') >23 AND to_char(SYSDATE,'mi')<30 THEN 30
WHEN to_char(SYSDATE,'mi') >30 AND to_char(SYSDATE,'mi')<38 THEN 30
WHEN to_char(SYSDATE,'mi') >38 AND to_char(SYSDATE,'mi')<45 THEN 45
WHEN to_char(SYSDATE,'mi') >45 AND to_char(SYSDATE,'mi')<53 THEN 45
WHEN to_char(SYSDATE,'mi') >45 AND to_char(SYSDATE,'mi')<53 THEN 0
END timer
FROM dual


当前日期星期几

select to_char(SYSDATE,'day') from dual;
SELECT to_char(SYSDATE,'DD') FROM dual
SELECT to_char(SYSDATE,'DDD') FROM dual       //一年的第几天
SELECT to_char(SYSDATE,'D') FROM dual        //西方一般周日当作一周的开始


或者
指定日期是星期几

select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','nls_date_language=american') from dual;


当前时间是第几周

select to_char(SYSDATE,'ww') from dual;


抽取当前时间分钟数

SELECT to_char(SYSDATE,'mi') FROM dual


抽取当前时间的24小时制的小时数

SELECT to_char(SYSDATE,'HH24') FROM dual


抽取当前时间的月份

SELECT EXTRACT(MONTH FROM SYSDATE) FROM DUAL


两个日期之间的天数

select floor(sysdate - to_date('20101103','yyyymmdd')) from dual;


两个日期的秒数

select (sysdate - to_date('20101103','yyyymmdd'))*24*60*60 from dual;


处理月份和天数不定的办法

select to_char(add_months(last_day(sysdate) +1, -2), 'yyyymmdd'),last_day(sysdate) from dual


算出今年的天数

select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual


取时区时间等

select localtimestamp,DBTIMEZONE,current_date,sessiontimezone from dual;


计算当前日期时间的小时,分,秒,毫秒

select
Days,
A,
TRUNC(A*24) Hours,
TRUNC(A*24*60 - 60*TRUNC(A*24)) Minutes,
TRUNC(A*24*60*60 - 60*TRUNC(A*24*60)) Seconds,
TRUNC(A*24*60*60*100 - 100*TRUNC(A*24*60*60)) mSeconds
from
(
select
trunc(sysdate) Days,
sysdate - trunc(sysdate) A
from dual
)


当前sysdate的时分秒转化

SQL> DECLARE
2    DateValue date;
3  begin
4    select sysdate into DateValue from dual;
5    dbms_output.put_line('源时间:'||to_char(DateValue));
6    dbms_output.put_line('源时间减1天:'||to_char(DateValue-1));
7    dbms_output.put_line('源时间减1天1小时:'||to_char(DateValue-1-1/24));
8    dbms_output.put_line('源时间减1天1小时1分:'||to_char(DateValue-1-1/24-1/(24*60)));
9    dbms_output.put_line('源时间减1天1小时1分1秒:'||to_char(DateValue-1-1/24-1/(24*60)-1/(24*60*60)));
10  end;
11  /


源时间:05-NOV-10
源时间减1天:04-NOV-10
源时间减1天1小时:04-NOV-10
源时间减1天1小时1分:04-NOV-10
源时间减1天1小时1分1秒:04-NOV-10

PL/SQL procedure successfully completed


--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论