oracle - 在 oracle 中转换时区?
问题描述
是否有一个简单的代码可以将给定的日期/时间转换为还应考虑 DST 的差异时区?我有日期时间值(以 UTC 为单位)和要转换的时区。
我知道这可以通过创建存储过程或函数来完成,但只是检查是否有更简单的方法。
解决方案
利用:
CAST( date_column AS TIMESTAMP )
将DATE
数据类型转换为TIMESTAMP
数据类型;FROM_TZ( timestamp_column, 'UTC' )
将TIMESTAMP
数据类型转换为时区的TIMESTAMP WITH TIME ZONE
数据类型。UTC
timestamp_with_timezone_column AT TIME ZONE 'EUROPE/LONDON'
将TIMESTAMP WITH TIME ZONE
数据类型从一个时区转换为另一种时区。
把所有这些放在一起:
Oracle 11g R2 模式设置:
CREATE TABLE table_name( date_time ) AS
SELECT DATE '2018-08-23' FROM DUAL UNION ALL
SELECT SYSDATE FROM DUAL UNION ALL
SELECT DATE '2018-12-01' FROM DUAL;
查询1:(也用于很好地TO_CHAR
显示)TIMESTAMP
SELECT date_time,
TO_CHAR( FROM_TZ( CAST( date_time AS TIMESTAMP ), 'UTC' ) AT TIME ZONE 'EUROPE/LONDON', 'YYYY-MM-DD"T"HH24:MI:SS.FFTZH:TZM' ) AS london_date_time
FROM table_name
结果:
| DATE_TIME | LONDON_DATE_TIME |
|----------------------|----------------------------------|
| 2018-08-23T00:00:00Z | 2018-08-23T01:00:00.000000+01:00 |
| 2018-08-23T11:20:56Z | 2018-08-23T12:20:56.000000+01:00 |
| 2018-12-01T00:00:00Z | 2018-12-01T00:00:00.000000+00:00 |
推荐阅读
- node.js - Docker Postgres 服务不允许我连接到它
- javascript - 延迟加载下一页 fullpage.js 不起作用
- javascript - 关闭选项卡或从 codeigniter 中的任务管理器关闭浏览器时自动注销用户
- wildfly - Wildfly 13 - 在 ear 项目中使用 logback 正确设置项目
- java - 如何使用自己的跑步者在 gitlab 作业中将 Postgres 作为服务运行?
- python - python - 在 \ 的最新出现后删除所有字符
- python - 是否可以在 xaxis 顶部绘制 xticklabels?
- vulkan - 使用vulkan时记录命令的正确方法是什么?
- html - 在我的范围内扩展 Bootstrap Navigator 时遇到问题
- php - 私人频道上的 Laravel Echo + Pusher 订阅错误