oracle北京时区,ORACLE中的时区(time zone)

本文介绍Oracle数据库中timestampwithtimezone及timestampwithlocaltimezone两种时区数据类型的使用方式,并通过实例演示了不同时间戳函数如systimestamp、localtimestamp等在特定时区设置下的表现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

oracle对时区的支持比较完美了,有timestamp with time zone和timestamp with local time zone两种数据类型。所谓timestamp with time zone,也就是把时区信息保存在列数据中,而timestamp with local time zone,会将用户输入的时间转换为数据库服务器所在时区的时间,保存在列中,这样能稍稍减少一点保存的数据量。因为timestamp with local time zone中不会保存时区信息(时区与数据库服务器所在时区相同),所以当数据库中有表存在timestamp with local time zone 时,数据库不能更改时区。如果有可能将数据库跨时区迁移,最好还是用timestamp with time zone好了,该数据类型最具有扩展性。

说起时区,不得不提及几个关于timestamp的函数了:

systimestamp数据库服务器当前的时间以及时区;

localtimestamp 客户端当前时间,不包含时区;

current_timestamp 客户端当前时区,包含客户端的时区。

说了这么多,下面看个例子,为了看到例子的效果,我们首先修改客户端的时区为西五区(美国东部时间),实验当前时间为北京时间2010年01月03日早晨11点左右。

alter session set TIME_ZONE='-5:00';

然后新建一个表

CREATE TABLE TEST(ID number(2),

time_tz timestamp with time zone,

time_lc_tz timestamp with local time zone);

向表中插入几行看看:

insert into test

values (1,localtimestamp,localtimestamp);

insert into test

values (2,systimestamp,systimestamp);

insert into test

values (3,current_timestamp,current_timestamp);

insert into test

values (3,current_timestamp,current_timestamp);

insert into test

values(4,to_timestamp('2010-01-03 11:09:00','YYYY-MM-DD HH24:MI:SS'),

to_timestamp('2010-01-03 11:09:00','YYYY-MM-DD HH24:MI:SS'));

insert into test

values(5,to_timestamp_tz('2010-01-03 11:09:00 +0:00','YYYY-MM-DD HH24:MI:SS TZH:TZM'),

to_timestamp_tz('2010-01-03 11:09:00 +0:00','YYYY-MM-DD HH24:MI:SS TZH:TZM'));

提交插入的数据:COMMIT;

在当前session查询看看:(当前session时区为-5:00)

select * from test;

IDTIME_TZTIME_LC_TZ

1

02-1月 -10 09.58.45.106141 下午 -05:00

02-1月 -10 09.58.45.106141 下午

2

03-1月 -10 10.58.45.130013 上午 +08:00

02-1月 -10 09.58

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值