【ORACLE】ORACLE时区总结

本文深入探讨Oracle数据库中时间处理的多个方面,包括会话时区设置、时间格式调整、不同时间戳类型的使用场景及其区别,以及如何操作间隔年到月、天到秒的数据类型。此外,还介绍了时间抽取、绝对位移、字符串转换为时间戳的方法,并展示了如何通过SQL函数进行日期和时间的加减运算。
--设置会话时区
alter session set time_zone = '+10:00';
--设置会话时间格式
alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';
select DBTIMEZONE,sessiontimezone, current_date,current_timestamp,localtimestamp from dual;
--current_date就是当前的事件
--current_timestamp加了时区
--localtimestamp没有加时区
--sessiontimezone 当前会话的时区
--DBTIMEZONE 数据库时区

--命名区域值
select table_name from dict where table_name like '%TIMEZONE%';
select * from GV$TIMEZONE_NAMES

--TIMESTAMP with local time zone
create table web_shop(
f_time timestamp with time zone,
e_time timestamp with local time zone
)
insert into web_shop values(sysdate,sysdate+2)
--这个时候如果改变了 time_zone 则e_time就会根据 time_zone修改的值来做出改变,而f_time一旦设置好就不会发生改变
--这是timestamp with time zone 和 timestamp with local time zone的区别
select * from web_shop

--interval year to month
--间隔年到月
create table warranty(
prod_id number, warranty_time interval year(3) to month--表示年可以放3位
)
insert into warranty values(123, '1-2')
insert into warranty values(125,interval '10' year);
insert into warranty values(125,interval '2-5' year to month);
insert into warranty values(125,interval '6' month);
select * from warranty
--间隔天到秒
create table lab(
exp_id number, test_time interval day(2) to second--表示年可以放3位
)
insert into lab values(100012, '90 00:00:00');
insert into lab values(56060, interval '6 03:30:16' day to second);
insert into lab values(56060, interval '1' day);
insert into lab values(56060, interval '1' minute);
insert into lab values(56060, interval '1' second);
insert into lab values(56060, interval '0 00:00:10' day to second);
select * from lab
--时间抽取 EXTRACT
--返回的是一个数字类型  ps:数字类型是右对齐,字符串类型是左对齐
select extract(year from sysdate) from dual;
select extract(month from sysdate) from dual;
select extract(day from sysdate) from dual;
--时间的绝对位移  TZ_OFFSET
select TZ_OFFSET('asia/chongqing') from dual;
select TZ_OFFSET('europe/london') from dual;
select TZ_OFFSET('canada/yukon') from dual;
--字符串转换为时间戳的形式 FROM_TZ
select FROM_TZ(timestamp'2000-07-12 08:00:00','europe/london') from dual;
--to_timestamp
select to_timestamp('2007-03-01 00:00:00','yyyy-mm-dd hh24:mi:ss') from dual;
--numtoyminterval 加年或月的时间
select sysdate+1 ,sysdate+ numtoyminterval(1'year') from dual
select sysdate+1 ,sysdate+ numtoyminterval(1'month') from dual
----numtodsinterval 加天或秒的时间
select sysdate+1 ,sysdate+ numtodsinterval(1'day') from dual
select sysdate+1 ,sysdate+ numtodsinterval(1'second') from dual
--to_yminterval 年到月
select sysdate+1 ,sysdate+ to_yminterval('1-3') from dual  --加上一年零三个月
--to_dsinterval  天到秒
select sysdate+1 ,sysdate+ to_dsinterval('100 23:00:00') from dual  --加上100天 23小时
--夏令时 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值