oracle 时间日期的加减,格式化

时间:2022-09-22 17:43:21
-- oracle 环境
select *from v$version; -- oracle版本
SELECT SESSIONTIMEZONE FROM DUAL; -- 时区
show parameter nls; -- 命令行



-- 时间及日期
select to_char(sysdate,'yyyy/mm/dd') from dual;
select to_char(sysdate,'yyyy-mm-dd') from dual;
-- 公元标记
select to_char(sysdate,'AD YYYY-MM-DD') from dual;
select to_char(sysdate,'BC YYYY-MM-DD') from dual;
-- 子午线标识
select to_char(sysdate,'YYYY-MM-DD AM hh24:mi:ss') from dual;
select to_char(sysdate,'YYYY-MM-DD PM hh24:mi:ss') from dual;
-- 世纪标识
select to_char(to_date('2000-8-3','YYYY-MM-DD'),'cc') from dual;
select to_char(to_date('2001-8-3','YYYY-MM-DD'),'cc') from dual;
-- 自公元前4712年1月1日到指定日期的总天数
select to_char(sysdate,'J') from dual;


-- 部分时间和日期
-- 指定日期在周中的数值范围(1-7) 星期日开始
select to_char(to_date('2017-07-05','yyyy-mm-dd'),'D') from dual;
-- 指定日期在当月中的天数 (1-31)
select to_char(to_date('2017-07-05','yyyy-mm-dd'),'DD') from dual;
-- 指定日期在当年中的天数(1-366)
select to_char(to_date('2017-07-05','yyyy-mm-dd'),'DDD') from dual;
-- 指定日期在周中的名称
select to_char(to_date('2017-07-04','yyyy-mm-dd'),'Day') from dual;
select to_char(sysdate,'DY') from dual;
-- 返回指定日期在当月中的第X周(范围:1-5)
select to_char(to_date('2007-6-1','yyyy-mm-dd'),'w') from dual;
-- 返回指定日期在当年中的第X周(范围:1-53)
select to_char(to_date('2007-6-18','yyyy-mm-dd'),'ww') from dual;
select to_char(sysdate,'IW') from dual; -- 指定日期在当年中第X周(范围:1-52或1-53(润年))
-- 指定日期的月份简写
select to_char(sysdate,'MON') from dual; -- 7月
select to_char(sysdate,'MONTH') from dual; -- 7月
select to_char(sysdate,'MM') from dual; -- 07
select to_char(to_date('2007-11-3','yyyy-mm-dd'),'RM') from dual; -- 以罗马数字形式返回月份(范围I-XII)
select to_char(to_date('2007-2-3','yyyy-mm-dd'),'q') from dual; -- 返回指定日期的季度(范围:1-4)
-- 年份
select to_char(sysdate,'year') from dual; -- twenty seventeen
select to_char(sysdate,'yyyy') from dual; -- 2017
select to_char(sysdate,'SYYYY') from dual; -- 2017
select to_char(sysdate,'y,yyy') from dual; -- Y,YYY 返回有逗号分隔显示的年
select to_char(to_date('187-4-3','yyyy-mm-dd'),'IYYY') from dual; -- 返回ISO标准年
select to_char(sysdate,'yy') from dual; --以指定长度返回日期的年份
-- 小时
select to_char(sysdate,'am hh') from dual; -- 下午 03
select to_char(sysdate,'am hh12') from dual; -- 下午 03
select to_char(sysdate,'am hh24') from dual; -- 下午 15
-- 分钟
select to_char(sysdate,'MI') from dual;
-- 秒数
select to_char(sysdate,'ss') from dual;
select to_char(sysdate,'sssss') from dual; -- 返回自午夜到指定时间共逝去的秒数(范围:0-86399)
-- 毫秒数 FF[1-9] 返回毫秒数,可指定长度1-9,默认6位
select to_char(systimestamp,'ff') from dual;
select to_char(systimestamp,'ff4') from dual;

-- 根据数据库nls_date_format参数中的设置及nls_language,nls_territory参数中的格式返回长日期形式
select to_char(sysdate,'DL') from dual; -- 2017年7月4日 星期二
select to_char(sysdate,'Ds') from dual; -- 短日期形式 2017-07-04

-- 时间
select to_char(sysdate,'ts') from dual; -- 下午 3:55:51
--数据库的星期
alter session set nls_language='AMERICAN';
alter session set nls_language='SIMPLIFIED CHINESE';
select to_char(sysdate,'dy') from dual;



-- 日期加减
--加法
select sysdate,add_months(sysdate,12) from dual; --加1年
select sysdate,add_months(sysdate,1) from dual; --加1月
select sysdate,to_char(sysdate+7,'yyyy-mm-dd HH24:MI:SS') from dual; --加1星期
select sysdate,to_char(sysdate+1,'yyyy-mm-dd HH24:MI:SS') from dual; --加1天
select sysdate,to_char(sysdate+1/24,'yyyy-mm-dd HH24:MI:SS') from dual; --加1小时
select sysdate,to_char(sysdate+1/24/60,'yyyy-mm-dd HH24:MI:SS') from dual; --加1分钟
select sysdate,to_char(sysdate+1/24/60/60,'yyyy-mm-dd HH24:MI:SS') from dual; --加1秒
-- 减法
select sysdate,add_months(sysdate,-12) from dual; --减1年
select sysdate,add_months(sysdate,-1) from dual; --减1月
select sysdate,to_char(sysdate-7,'yyyy-mm-dd HH24:MI:SS') from dual; --减1星期
select sysdate,to_char(sysdate-1,'yyyy-mm-dd HH24:MI:SS') from dual; --减1天
select sysdate,to_char(sysdate-1/24,'yyyy-mm-dd HH24:MI:SS') from dual; --减1小时
select sysdate,to_char(sysdate-1/24/60,'yyyy-mm-dd HH24:MI:SS') from dual; --减1分钟
select sysdate,to_char(sysdate-1/24/60/60,'yyyy-mm-dd HH24:MI:SS') from dual; --减1秒