다음을 통해 공유


parse_timestamp 함수

적용 대상:yes Databricks Runtime 18.1 이상으로 표시된 확인

문자열인 경우 expr 지정된 형식 목록에서 일치하는 첫 번째 패턴에 따라 구문 분석 TIMESTAMP 합니다. 하나 이상의 형식이 미리 정의된 형식 목록을 참조할 수 있습니다. 숫자 형식인 경우 expr Unix 타임스탬프로 구문 분석합니다.

문법

parse_timestamp(expr [, { pattern [...] } ])

Arguments

  • expr: 로 구문 분석할 문자열 또는 숫자 값입니다 TIMESTAMP. 허용되는 형식은 다음과 같습니다.
    • TINYINT, SMALLINT, , INT, BIGINT
    • FLOAT, DOUBLE
    • DECIMAL (최대 18개 정밀도)
    • STRING
  • 패턴: 타임스탬프 패턴의 선택적 목록 또는 미리 정의된 목록(예: #iso8601 또는 #rfc3339.)에 대한 참조입니다. 타임스탬프 패턴은 상수 문자열이어야 합니다. 지정한 패턴이 없으면 지정하는 #extended것과 같습니다.

Returns

TIMESTAMP 구문 분석된 expr.

expr 문자열인 경우 첫 번째 일치 패턴에 따라 구문 분석됩니다. 일치하는 패턴이 없으면 함수에서 오류가 발생합니다.

expr 숫자인 경우 항상 Unix 타임스탬프로 구문 분석됩니다.

exprNULL 경우, 함수는 NULL를 반환합니다.

구문 분석이 실패할 때 오류 대신 반환 NULL 하려면 함수를 사용합니다try_parse_timestamp.

Notes

  • 패턴 목록에 값이 NULL 포함되어 있으면 무시됩니다. 제공된 모든 패턴이 NULL면 결과는 .입니다 NULL.
  • 타임스탬프가 표준 시간대 정보가 없는 패턴과 일치하면 세션 표준 시간대에서 구문 분석됩니다.

오류 조건

예제

-- Parse timestamp according to default pattern list
> SELECT parse_timestamp('2024-12-09T19:30:01');
 2024-12-09 19:30:01.000

-- Parse a microsecond epoch timestamp using the unix pattern list
> SELECT parse_timestamp('1733772601000000', '#unix');
 2024-12-09 19:30:01.000

-- Bad `expr` that does not match any pattern
> SELECT parse_timestamp('bad input');
  Error: CANNOT_PARSE_TIMESTAMP

-- Use try_parse_timestamp to return NULL instead of error
> SELECT try_parse_timestamp('bad input');
 NULL

-- Extend the default pattern list with custom patterns
> SELECT parse_timestamp(col, "#extended", "dd MMM, yyyy", "MMM d; yy") FROM VALUES ('2024-12-01'), ('02 Dec, 2024'), ('DEC 3; 24') AS t(col)
 2024-12-01 00:00:00.000
 2024-12-02 00:00:00.000
 2024-12-03 00:00:00.000

패턴 참조

parse_timestamptry_parse_timestamp 함수는 .에서 사용하는 to_timestamp표준 datetime 패턴과 몇 가지 다른 패턴 집합을 사용합니다. 다음 표에서는 모든 패턴 기호와 각 기호가 지원되는지 여부를 나열합니다.

기호 Meaning 예제 지원
U 유닉스 아래 참고 사항 참조 지원됨
G 시대 광고; 안노 도미니 지원되지 않음
y 연도 2020; 20 지원됨
D 연중 일수 189 지원되지 않음
M/L 연간 월 7; 07; 7월; 7월 지원됨
d 일자 28 지원됨
Q/q 연간 사분기 3; 03; Q3; 3분기 지원되지 않음
E 요일 화; 화요일 지원됨
F 매월 정렬된 요일 3 지원되지 않음
오전 오전-오후 오후 시간 지원됨
시간 오전/오후 시간 표시(1~12) 12 지원됨
K 오전/오후 시간 (0-11시) 0 지원됨
k 하루 중 시계 시간(1~24) 1 지원되지 않음
H 하루 중 시간(0-23) 0 지원됨
m 분/시간 30 지원됨
s 초/분 55 지원됨
S 초 단위의 소수 978 지원됨
V 시간대 ID America/Los_Angeles; Z; -08:30 지원됨
z 표준 시간대 이름 태평양 표준시; PST 지원됨
O 지역화된 영역 오프셋 GMT+8; GMT+08:00; UTC-08:00 지원됨
X 0에 대한 영역 오프셋 'Z' Z; -08; -0830; -08:30 지원됨(1-3자리)
x 영역 오프셋 +0000; -08; -0830; -08:30 지원됨(1-3자리)
Z 영역 오프셋 +0000; -0800; -08:00 지원됨
# 패턴 목록 #common, #iso8601 지원됨

메모

Unix 패턴(U):#unix 패턴 목록은 Unix epoch 타임스탬프를 구문 분석합니다. 1971-08-03에서 3554-06-09 사이의 날짜의 경우 구현은 Unix 타임스탬프를 몇 초, 마이크로초 및 나노초 단위로 구분하고 구문 분석할 수 있습니다. 해당 범위를 벗어난 날짜가 잘못 구문 분석되거나 구문 분석되지 않을 수 있습니다. 음수 정수는 지원되지 않습니다. 소수 자릿수 값은 최대 9개의 소수 자릿수까지 지원되며 결과 형식의 전체 자릿수와 일치하도록 잘립니다.

로캘: 패턴 자리 표시자는 로캘을 인식하지 않습니다. 월 및 일 이름은 영어로만 지원됩니다.

패턴 목록

미리 정의된 패턴 목록을 이름으로 전달할 수 있습니다(예: <a0/>). 다음 패턴 목록을 사용할 수 있습니다.

  • common - 표준에 의해 정의되지 않은 일반적으로 발견되는 패턴
  • iso8601
  • rfc1036, rfc1123, rfc2822, rfc3164, rfc3339, rfc4287, rfc5322, rfc5424, rfc6265, rfc7231, rfc822, rfc850, rfc9110, rfc9557
  • unix - Unix epoch 타임스탬프만
  • extended — 위의 모든 목록의 공용 구조체; 또한 패턴이 지정되지 않은 경우의 기본값입니다.
  • extended-dmy - DMY 로캘 관련 형식으로 확장
  • extended-mdy - MDY 로캘 관련 형식으로 확장