@DATE
@DATE 함수를 사용하여 소스 열로 전달된 형식을 기반으로 다양한 형식의 날짜 및 시간을 대상 열로 반환합니다. @DATE는 거의 모든 유형의 입력을 적합한 SQL 날짜로 변환합니다. @DATE는 날짜 열의 일부를 추출하거나 날짜를 기반으로 숫자 시간 기록 열을 계산하는 데도 사용할 수 있습니다. 함수
구문
@DATE ('<output_descriptor>', '<input_descriptor>', <source_column>
[, '<input_descriptor>', <source_column>] [, ...])
<'output_descriptor'>
함수 출력입니다. 유효한 값은 대상 열에 필요한 날짜 기술자 및 선택적 리터럴 값(예: 공백 또는 콜론)으로 구성된 문자열입니다. 날짜 설명자는 필요에 따라 함께 묶을 수 있습니다. 날짜 설명자에 대한 설명은 Table 3-1을 참조하십시오. 형식 기술자는 대상에 대한 date/time/timestamp 형식과 일치해야 합니다. Oracle GoldenGate는 필요한 경우 지정된 형식을 무효화하여 수정합니다.
<'input_descriptor'>
소스 입력입니다. 유효한 값은 날짜 기술자와 선택적 리터럴 값(예: 공백 또는 콜론)으로 구성된 문자열입니다. 날짜 설명자는 필요에 따라 함께 묶을 수 있습니다. 예를 들면 다음과 같습니다.
-
기술자 문자열
'YYYYMMDD'은<source_column>로 지정된 소스 열에 4자리 연도(YYYY), 월(MM) 및 일(DD)이 포함됨을 나타냅니다. -
기술자 문자열
'DD/MM/YY'는<source_column>로 지정된 소스 열에 일, 슬래시, 월, 슬래시 및 2자리 연도가 포함되어 있음을 나타냅니다.
날짜 설명은 표 3-1을 참조하십시오.
<source_column>
<input_descriptor>로 지정된 입력을 제공하는 숫자 또는 문자 소스 열의 이름입니다.
표 1 날짜 설명자
| 기술자 | 설명 | 유효 기간... |
|---|---|---|
| 참조 | 세기 | 입/출력 |
| YY | 2자리 연도 | 입/출력 |
| `YYYY` | 4자리 연도 | 입/출력 |
| `MM` | 숫자 월 | 입/출력 |
| MMM | 영숫자 월(예: APR, OCT) |
입/출력 |
| `DD` | 숫자 월중 특정일 | 입/출력 |
| DDD | 연도의 숫자일(예: 001 또는 365) |
입/출력 |
| DOW0 | 주의 숫자 요일(일요일 = 0) |
입/출력 |
| DOW1 | 주의 숫자 요일(일요일 = 1) |
입/출력 |
| 다우아 | 주의 영숫자 일(예: SUN, MON, TUE) |
입/출력 |
| HH | 시간 | 입/출력 |
| MI | 분 | 입/출력 |
| `SS` | 초 | 입/출력 |
| JTSLCT | 이미 현지 시간인 율리우스 타임스탬프에 사용하거나 율리우스 타임스탬프로 변환할 때 현지 시간을 유지하는 데 사용합니다. | 입/출력 |
| JTSGMT | Julian 타임스탬프, JTS.와 동일 |
입/출력 |
| `JTS` | 줄리언 타임스탬프 JUL 및 JTS는 숫자 표현식에 사용할 수 있는 숫자를 생성합니다. 단위는 마이크로초입니다. Windows 시스템에서는 Windows 시간 기록의 세분성이 밀리초이므로 값이 0으로 채워집니다. |
입/출력 |
| `7월` | 줄리안 데이 JUL 및 JTS는 숫자 표현식에 사용할 수 있는 숫자를 생성합니다. |
입/출력 |
| TTS | NonStop 48비트 시간 기록 | 입력 |
| `파미스` | PHAMIS 애플리케이션 일자 형식 |
입력 |
| FFFF | 분수(최대 마이크로초) | 입/출력 |
| `STRATUS` | STRATUS 애플리케이션 시간 기록 |
입/출력 |
| 일자 | C 시간 기록(초) | 입/출력 |
ISO 8601 날짜-시간 형식 지원
Oracle GoldenGate는 날짜, 시간 및 시간대를 나타내는 국제적으로 인정되는 형식인 ISO 8601을 지원합니다. 다음은 이 ISO 8601 형식에 대한 입력/출력 설명자입니다.
표 2 날짜 설명자
| 기술자 | 설명 | 유효 기간... |
|---|---|---|
| ISO8601_DATETIME | 선택적 시간대가 있는 ISO 8601 날짜-시간 형식입니다. YYYY-MM-DDTHH:MI:SSTZ와 동일합니다. |
입/출력 |
| ISO8601_DATETIME_FRACT | 선택적 소수 표시 초 및 선택적 시간대를 포함하는 ISO 8601 날짜-시간 형식입니다. YYYY-MM-DDTHH:MI:SS.FFFFFFTZ와 동일합니다. |
입/출력 |
| 시간 존 | 시간대 사양은 +/-HH:MI 또는 ID 지역(예: America/New_York)을 받아들입니다. |
입/출력 |
예제
예 1
2자리 연도가 제공되지만 출력에 4자리 연도가 필요한 경우 올바른 세기를 얻기 위한 여러 옵션이 있습니다.
- 세기는 다음과 같이 하드 코딩될 수 있습니다.
'CC', 19 or 'CC', 20
@IF함수는 다음과 같이 조건을 설정하는 데 사용할 수 있습니다.
'CC', @IF (YY > 70, 19, 20)
이렇게 하면 연도가 70보다 크면 세기가 19로 설정되고, 그렇지 않으면 세기가 20으로 설정됩니다.
- 시스템은 세기를 자동으로 계산할 수 있습니다. 연도가 50세 미만인 경우 시스템은 20세기를 계산하고, 그렇지 않은 경우 19세기가 계산됩니다.
예 2
다음은 연도, 월 및 일 열을 날짜로 변환합니다.
date_col = @DATE ('YYYY-MM-DD', 'YY', date1_yy, 'MM', date1_mm, 'DD', date1_dd)
예 3
다음은 날짜 및 시간을 변환하고 초를 0으로 기본 설정합니다.
date_col = @DATE ('YYYY-MM-DD HH:MI:00', 'YYMMDD', date1, 'HHMI', time1)
예 4
다음은 YYYYMMDDHHMISS로 저장된 숫자 열을 SQL 날짜로 변환합니다.
datetime_col = @DATE ('YYYY-MM-DD HH:MI:SS', 'YYYYMMDDHHMISS', numeric_date)
예 5
다음은 YYYYMMDDHHMISS로 저장된 숫자 열을 율리우스 타임스탬프로 변환합니다.
julian_ts_col = @DATE ('JTS', 'YYYYMMDDHHMISS', numeric_date)
예 6
Julian 시간 기록 열은 두 개의 별도 열(YYYY-MM-DD HH:MI:SS 형식의 datetime 열 및 시간 기록의 마이크로초 부분을 보유하는 분수 열)로 변환됩니다.
datetime_col = @DATE ('YYYY-MM-DD HH:MI:SS', 'JTS', jts_field), fraction_col = @DATE ('FFFFFF', 'JTS', jts_field)
예 7
다음은 YYYYMMDDHHMISS로 저장된 숫자 열을 ISO 8601 형식으로 변환합니다.
iso_datetime_col = @DATE ('YYYY-MM-DDTHH:MI:SSTZ', 'YYYYMMDDHHMISS', numeric_date)
예 8
다음은 시간의 전체 계산을 수행합니다. 이름이 dt인 소스 날짜 열에서 날짜 + 5시간으로 변환될 dt5라는 대상 열로 이동합니다. 또한 계산은 ts이라는 소스 시간 기록 열에서 ts5이라는 대상 열로 이동하여 시간 기록 + 5시간으로 변환됩니다.
MAP scratch.t4, TARGET scratch.t4_copy,
COLMAP ( USEDEFAULTS,
dt5 = @DATE ('YYYY-MM-DD HH:MI:SS', 'JTS',
@COMPUTE (@DATE ('JTS', 'YYYY-MM-DD HH:MI:SS', dt) + 18000000000 ) ),
ts5 = @DATE ('YYYY-MM-DD HH:MI:SS.FFFFFF', 'JTS',
@COMPUTE ( @DATE ('JTS', 'YYYY-MM-DD HH:MI:SS.FFFFFF', ts) + 18000000000 ) )
) ;