常用的日期时间处理方法

不念不忘少年蓝@ 2022-07-16 14:45 285阅读 0赞

author:skate
time:2010/11/04


今天记录下常用的日期时间处理方法,以备日后查询

当前时间最接近的刻钟
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

-——-end———

发表评论

表情:
评论列表 (有 0 条评论,285人围观)

还没有评论,来说两句吧...

相关阅读