Oracle 시간대가 있는 TIMESTAMP를 DATE로 변환
표준 시간대가 있는 DB가 있습니다.+04:00 (Europe/Moscow)
문자열을 형식으로 변환해야 합니다.YYYY-MM-DD"T"HH24:MI:SSTZH:TZM
로.DATE
Oracle 11g의 데이터 유형입니다.
다시 말해서, 나는 끈을 가지고 있습니다.2013-11-08T10:11:31+02:00
그리고 나는 그것을 변환하고 싶습니다.DATE
데이터 유형(로컬 DB 표준시)+04:00 (Europe/Moscow)
).
문자열용2013-11-08T10:11:31+02:00
내가 원하는 변신이 돌아와야 합니다.DATE
날짜가 있는 데이터 유형2013-11-08 12:11:31
(즉, 시간의 로컬 시간대 변환을 사용하여+04:00 (Europe/Moscow)
. 문자열의 시간대가 다를 수 있으며,+02:00
위의 문자열은 단지 예시일 뿐입니다.
저는 이것을 하려고 했습니다.TIMESTAMP
데이터 형식이지만 표준 시간대 변환에 성공하지 못했습니다.
to_timestamp_tz()
와 함께 일하는.at time zone
절을 사용하여 문자열 리터럴을 다음 값으로 변환할 수 있습니다.timestamp with time zone
데이터 유형:
SQL> with t1(tm) as(
2 select '2013-11-08T10:11:31+02:00' from dual
3 )
4 select to_timestamp_tz(tm, 'yyyy-mm-dd"T"hh24:mi:ss TZH:TZM')
5 at time zone '+4:00' as this_way
6 , to_timestamp_tz(tm, 'yyyy-mm-dd"T"hh24:mi:ss TZH:TZM')
7 at time zone 'Europe/Moscow' as or_this_way
8 from t1
9 /
결과:
THIS_WAY OR_THIS_WAY
----------------------------------------------------------------------------
2013-11-08 12.11.31 PM +04:00 2013-11-08 12.11.31 PM EUROPE/MOSCOW
그리고 나서, 우리는cast()
값을 산출하는 기능date
데이터 유형:
with t1(tm) as(
select '2013-11-08T10:11:31+02:00' from dual
)
select cast(to_timestamp_tz(tm, 'yyyy-mm-dd"T"hh24:mi:ss TZH:TZM')
at time zone '+4:00' as date) as this_way
, cast(to_timestamp_tz(tm, 'yyyy-mm-dd"T"hh24:mi:ss TZH:TZM')
at time zone 'Europe/Moscow' as date) as or_this_way
from t1
This_Way Or_This_Way
------------------------------------------
2013-11-08 12:11:31 2013-11-08 12:11:31
시간대 절 및 to_timestamp_tz() 함수에 대해 자세히 알아보십시오.
SELECT
CAST((FROM_TZ(CAST(timezonefield AS TIMESTAMP),'GMT') AT TIME ZONE 'CET') AS DATE)
FROM table;
GMT의 타임스탬프를 중부 유럽 시간의 현재 시간으로 변환합니다.
시간대가 있는 타임스탬프를 "타임스탬프 날짜"와 동기화된 날짜로 변환하려면 다음을 사용합니다.
select cast(to_timestamp_tz('2013-11-08T10:11:31-02:00'
,'yyyy-mm-dd"T"hh24:mi:sstzh:tzm'
)
at time zone to_char(systimestamp
,'tzh:tzm'
)
as date
)
from dual
현재 날짜로 타임스탬프를 캐스트합니다.
캐스트(등록 마스터).Stamp5DateTime as date) >= '05-05-2018' AND (등록마스터)스탬프5날짜날짜) <= '05-05-2018'
CAST(x AT TIME ZONE 'YYYY' AS DATE)를 사용하여 시간대를 관리할 수 있으며, 이를 통해 다음과 같은 이점을 얻을 수 있습니다.
WITH t1 (tm) AS (SELECT TIMESTAMP '2021-12-14 15:33:00 EET' FROM DUAL)
SELECT 'EET' tz, CAST (tm AT TIME ZONE 'Europe/Kaliningrad' AS DATE) AS datetime FROM t1
union SELECT 'MSK' tz, CAST (tm AT TIME ZONE 'Europe/Moscow' AS DATE) AS datetime FROM t1
union SELECT 'CET' tz, CAST (tm AT TIME ZONE 'Europe/Prague' AS DATE) AS datetime FROM t1
union SELECT 'UTC' tz, CAST (tm AT TIME ZONE 'UTC' AS DATE) AS datetime FROM t1
언급URL : https://stackoverflow.com/questions/20089859/oracle-convert-timestamp-with-timezone-to-date
'programing' 카테고리의 다른 글
도커 컨테이너 및 mysql 워크벤치 내의 MariaDb에 대한 연결 (0) | 2023.07.28 |
---|---|
배열 항목 대신 완전 배열 개체를 한 번에 하나씩 파이프로 연결하시겠습니까? (0) | 2023.07.28 |
Python 요청 라이브러리 새 URL 리디렉션 (0) | 2023.07.23 |
SQLite에서 Oracle INSTR 교체 (0) | 2023.07.23 |
사전 승인 주석의 Java 8/Spring 상수 (0) | 2023.07.23 |