加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Oracle时区转换(使用from_tz)

发布时间:2020-12-12 16:23:37 所属栏目:百科 来源:网络整理
导读:我正在尝试将时间(日期时间)从一个时区转换为另一个时区.在下面的查询中,我正在尝试将时间从EST(“America / New_York”)转换为PST(“America / Los_Angeles”).查询部分有效;结果: DATABASE_DATE = 2012-02-13 1:00:00 PM LOCALTIME (what I get): 2012-02
我正在尝试将时间(日期时间)从一个时区转换为另一个时区.在下面的查询中,我正在尝试将时间从EST(“America / New_York”)转换为PST(“America / Los_Angeles”).查询部分有效;结果:
DATABASE_DATE = 2012-02-13 1:00:00 PM  
LOCALTIME (what I get): 2012-02-12 10:00:00 AM.

所以时间好,但日期错了.它应该是2012-02-13而不是2012-02-12.

难道我做错了什么?这是我的查询:

select to_date( to_char( ( from_tz( to_timestamp( DATABASE_DATE,'YYYY-MM-DD HH:MI:SS'),'America/New_York')
                          at time zone 'America/Los_Angeles'),'YYYY-MM-DD HH:MI:SS') as localtime
 from table

谢谢

to_timestamp()获取一个字符串(VARCHAR2,CHAR …)如果你试图给它一个日期,那么oracle会根据NLS_DATE_FORMAT将它转换成一个字符串,这可能会因不同的环境而异并返回意外的结果(如本例所示) .
你应该做的是首先使用to_char,所以你的查询看起来像这样:
select to_date(to_char((from_tz(to_timestamp(to_char(DATABASE_DATE,'YYYY-MM-DD HH:MI:SS PM'),'America/New_York')
at time zone 'America/Los_Angeles'),'YYYY-MM-DD HH:MI:SS PM') as localtime
from table

更新:如果我理解你,你想要这样的东西:

select to_char((from_tz(to_timestamp(to_char(DATABASE_DATE,'America/New_York')
    at time zone 'America/Los_Angeles'),'YYYY-MM-DD HH:MI:SS PM TZD') as localtime
    from table

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读