본문으로 건너뛰기
최종 수정: 에

DATE 타입으로 변환

DATE 타입의 유효 범위: [0000-01-01, 9999-12-31]

문자열에서 변환​

엄격 모드​

BNF 정의​

<datetime>       ::= <date> (("T" | " ") <time> <whitespace>* <offset>?)?
| <digit>{14} <fraction>? <whitespace>* <offset>?

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

<date> ::= <year> ("-" | "/") <month1> ("-" | "/") <day1>
| <year> <month2> <day2>

<year> ::= <digit>{2} | <digit>{4} ; 1970 as the boundary
<month1> ::= <digit>{1,2} ; 01–12
<day1> ::= <digit>{1,2} ; 01–28/29/30/31 depending on the month

<month2> ::= <digit>{2} ; 01–12
<day2> ::= <digit>{2} ; 01–28/29/30/31 depending on the month

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

<time> ::= <hour1> (":" <minute1> (":" <second1> <fraction>?)?)?
| <hour2> (<minute2> (<second2> <fraction>?)?)?

<hour1> ::= <digit>{1,2} ; 00–23
<minute1> ::= <digit>{1,2} ; 00–59
<second1> ::= <digit>{1,2} ; 00–59

<hour2> ::= <digit>{2} ; 00–23
<minute2> ::= <digit>{2} ; 00–59
<second2> ::= <digit>{2} ; 00–59

<fraction> ::= "." <digit>*

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

<offset> ::= ( "+" | "-" ) <hour-offset> [ ":"? <minute-offset> ]
| <special-tz>
| <long-tz>

<hour-offset> ::= <digit>{1,2} ; 0–14
<minute-offset> ::= <digit>{2} ; 00/30/45

<special-tz> ::= "CST" | "UTC" | "GMT" | "ZULU" | "Z" ; case-insensitive
<long-tz> ::= ( ^<whitespace> )+ ; e.g. America/New_York

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

<digit> ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"

<area> ::= <alpha>+
<location> ::= (<alpha> | "_")+
<alpha> ::= "A" | … | "Z" | "a" | … | "z"
<whitespace> ::= " " | "\t" | "\n" | "\r" | "\v" | "\f"

규칙 설명​

전체 구조​
  • 날짜 부분은 필수이며, 시간 부분과 시간대 부분은 선택 사항입니다.

  • 시간 부분이 있으면 날짜와 시간 사이를 대문자 "T" 또는 공백으로 구분할 수 있습니다.

  • 시간대 부분이 있으면 시간과 시간대 사이에 ASCII 공백 문자를 개수 제한 없이 사용할 수 있습니다.

  • ASCII 문자만 허용됩니다. 입력 문자열에 ASCII가 아닌 문자가 포함되면 위의 BNF 정의를 충족하지 않으므로 형식 오류로 처리됩니다.

날짜 부분 <date>​
  • 다음 두 가지 형식을 허용합니다.

    • 구분자가 있는 형식: YYYY-MM-DD 등

    • 이어 붙인 형식: YYYYMMDD 등

  • <year>: 두 자리 또는 네 자리 숫자

    • 두 자리 연도(00-99): < 70 → 2000+두 자리 값, ≥ 70 → 1900+두 자리 값.

    • 네 자리 연도는 그대로 사용합니다.

  • 구분자로는 '-'만 지원합니다.

  • <year>, <month>, <day>는 구분자가 있는 형식에서 서로 다른 길이를 지원합니다. 이어 붙인 형식에서는 <year>가 2자리 또는 4자리를 지원하고, 나머지는 2자리로 고정됩니다.

시간 부분 <time>​
  • 다음 두 가지 형식을 허용합니다.

    • 구분자가 있는 형식: HH[:MM[:SS[.fraction]]] 등

    • 이어 붙인 형식: HH[MM[SS[.fraction]]] 등

  • <hour>: 0–23.

  • <minute>: 0–59.

  • <second>: 0–59.

  • <fraction>: 소수점 뒤에 오는 숫자로, 자릿수에 제한이 없으며 초의 소수부를 나타냅니다. 가장 높은 자릿수는 0.1초(백 밀리초)에 해당합니다.

  • <hour>, <minute>, <second>는 구분자가 있는 형식에서 1-2자리를 허용하며, 이어 붙인 형식에서는 길이가 2자리로 고정됩니다.

  • 왼쪽부터 연속된 일부 필드만 사용하고 나머지는 생략할 수 있습니다. 예를 들어 <hour> + <minute>는 유효하지만, <hour> + <fraction>은 유효하지 않습니다.

연속 숫자 형식 <digit>{14}​
  • 연도, 월, 일, 시, 분, 초를 각각 4자리-2자리-2자리-2자리-2자리-2자리로 해석합니다.

  • 그런 다음 소수부와 시간대 부분이 있으면 규칙에 따라 파싱합니다.

시간대 부분 <offset>​
  • 날짜와 시간대 사이에는 모든 공백 문자를 사용할 수 있습니다.

  • 대소문자를 구분하지 않습니다.

  • 다음 세 가지 유형을 허용합니다.

    1. 숫자 오프셋: (+|-)HH[:MM] 또는 (+|-)HHMM 등

      • <hour-offset>: 0–14. 한 자리 값에서는 앞의 0을 생략할 수 있습니다.

      • <minute-offset>: 00, 30 또는 45. ":"는 생략할 수 있습니다.

      • 숫자 오프셋의 최대 범위는 [-14:00, +14:00]입니다.

    2. 특수 UTC 식별자: Z/UTC/GMT/CST/ZULU. 각 기호가 나타내는 시간대 오프셋은 다음과 같습니다.

      • Z: +00:00

      • UTC: +00:00

      • GMT: +00:00

      • CST: +08:00

      • ZULU: +00:00

    3. 긴 형식의 시간대 이름: IANA가 관리하는 시간대 데이터베이스에 포함된 모든 유효한 시간대 이름을 허용합니다. 예를 들어 Europe/Paris, Etc/GMT+2 등이 있으며, 대소문자를 구분하지 않습니다.

      • 사용할 수 있는 시간대 이름은 시간대 문서를 참조하세요.
공백​
  • <whitespace>: 스페이스, 탭, 줄바꿈 등을 포함한 모든 공백 문자입니다.
파싱 로직​

<datetime>의 모든 입력 필드가 유효한 입력 문자열에 대해 Doris는 <date> 부분만 읽고 그 결과를 변환 후의 대상 값으로 사용합니다. 입력은 각 필드에 따라 결과의 해당 부분에 할당됩니다. 예를 들어 <year>에 일치하는 값은 결과의 연도 부분에, <month>에 일치하는 값은 결과의 월 부분에, <day>에 일치하는 값은 결과의 일 부분에 설정됩니다.

구체적으로, 입력 날짜 결과가 0000년 00월 00일이고 BE CONFIG allow_zero_date가 true이면 값 범위 오류로 처리하지 않으며, 결과는 0000년 01월 01일이 됩니다.

자리 올림​

자리 올림은 발생하지 않습니다.

오류 처리​
  • 형식 오류: 입력이 위의 BNF 분기 중 어느 것과도 일치하지 않으면 즉시 오류를 보고합니다.

  • 값 범위 오류: <date> 부분이 유효하지 않으면, 즉 유효한 그레고리력 날짜가 되지 않으면 오류를 보고합니다.

예제​

현재 Doris 시간대가 UTC+8(+08:00)이라고 가정합니다. 시간대가 시간 타입 파싱에 미치는 영향은 시간대 문서를 참조하세요.

문자열DATE 변환 결과설명
2023-07-16T19:20:30.123+08:002023-07-16구분자가 있는 날짜 + 'T' + 초 및 밀리초 + 숫자 오프셋
2023-07-16T19+08:002023-07-16분과 초를 생략한 이어 붙인 시간 형식. UTC+8로 변환해도 결과가 바뀌지 않음.
2023-07-16T1920+08:002023-07-16초를 생략한 이어 붙인 시간 형식. UTC+8로 변환해도 결과가 바뀌지 않음.
70-1-1T00:00:00-00001970-01-01두 자리 연도 + 한 자리/두 자리 월/일 + 구분자 + 이어 붙인 오프셋
19991231T235960.5UTC1999-12-31이어 붙인 날짜 + 'T' + 이어 붙인 시간 + 소수부 + UTC
2024-02-29 12:00:00 Europe/Paris2024-02-29유효한 윤년 날짜 + 공백 + 전체 시간 + 공백 + 시간대 이름
2024-05-01T00:00Asia/Shanghai2024-05-01일부 필드가 생략된 시간 + 시간대 이름
20231005T081530Europe/London2023-10-05이어 붙인 날짜 + 시간대 이름
85-12-25T0000gMt1985-12-25대소문자가 혼합된 시간대
2024-05-012024-05-01날짜만 지정
24-5-12024-05-012자리 연도 + 1자리 월 + 1자리 일
2024-05-01 0:1:2.3332024-05-01이어 붙인 날짜 + 'T' + 한 자리 시/분/초 + 밀리초
2024-05-01 0:1:2.2024-05-01이어 붙인 날짜 + 'T' + 한 자리 시/분/초 + 숫자 없이 소수점만 지정
20240501 012024-05-01이어 붙인 날짜 + ' ' + 분과 초 생략
20230716 1920Z2023-07-16이어 붙인 날짜 + 공백 + 이어 붙인 시/분 + UTC 'Z'
20240501T00002024-05-01이어 붙인 날짜 + 'T' + 초를 생략한 이어 붙인 시간
2024-12-31 23:59:59.99999992024-12-31구분자가 있는 날짜 + 공백 + 밀리초가 있는 시간. 시간 부분은 무시됨
2025/06/15T00:00:00.999999999999992025-06-15소수 자릿수에 제한 없음
2020-12-12 13:12:12-03:002020-12-12자리 올림 없음
0023-01-01T00:00Z0023-01-01유효한 네 자리 연도
69-12-311969-12-31두 자리 연도 69 → 1969-12-31
70-01-011970-01-01두 자리 연도 70 → 1970-01-01
2301022023-01-02짧은 연도를 사용한 이어 붙인 DATE 형식
192301011923-01-01긴 연도를 사용한 이어 붙인 DATE 형식
120102030405오류(형식 오류)DATE - TIME 구분자 누락
20120102030405.123 +082012-01-0214자리로 이어 붙인 날짜 + 소수부 + 짧은 시간대 오프셋
120102030405.999오류(형식 오류)DATE - TIME 구분자 누락
2020-05-05 12:30:602020-05-05초가 유효하지 않지만 DATE 해석에 사용되는 부분이 아님
2023-07-16T19.123+08:00오류(형식 오류)날짜에 연속되지 않은 필드가 포함됨(시 + 밀리초가 분과 초를 건너뜀)
2024/05/012024-05-01날짜 구분자로 '/' 사용
24012오류(형식 오류)날짜의 자릿수가 유효하지 않음
2411 123오류(형식 오류)날짜와 시간 부분 모두 자릿수가 유효하지 않음
2024-05-01 01:030:02오류(형식 오류)분의 자릿수가 유효하지 않음
10000-01-01 00:00:00오류(형식 오류)연도의 자릿수가 유효하지 않음
2024-0131T12:00오류(형식 오류)월을 이어 붙인 형식에 구분자가 혼합됨
2024-05-01@00:00오류(형식 오류)잘못된 구분자
20120212051오류(형식 오류)자릿수 오류
2024-05-01T00:00XYZ일반적으로 오류(형식 오류)알 수 없는 시간대 약어(시간대 문서 참조)
2024-5-1T24:00오류(값 범위 오류)시 값 24가 범위를 벗어남
2024-02-30오류(값 범위 오류)이월 30일은 존재하지 않음
2024-05-01T12:60오류(값 범위 오류)분 값 60이 범위를 벗어남
2012-06-30T23:59:60오류(값 범위 오류)윤초는 허용되지 않음
2024-05-01T00:00+14:30오류(값 범위 오류)시간대 오프셋이 최대 범위를 초과함
2024-05-01T00:00+08:25오류(값 범위 오류)시간대 오프셋의 분 값 25가 유효하지 않음

비엄격 모드​

BNF 정의​

엄격 모드에서 지원하는 형식 외에 다음 형식도 지원합니다.

<datetime> ::= <whitespace>* <date> (<delimiter> <time> <whitespace>* <timezone>?)? <whitespace>*

<date> ::= <year> <separator> <month> <separator> <day>
<time> ::= <hour> <separator> <minute> <separator> <second> [<fraction>]

<year> ::= <digit>{4} | <digit>{2}
<month> ::= <digit>{1,2}
<day> ::= <digit>{1,2}
<hour> ::= <digit>{1,2}
<minute> ::= <digit>{1,2}
<second> ::= <digit>{1,2}

<separator> ::= any symbol except digits or letters
<delimiter> ::= " " | "T" | ":"

<fraction> ::= "." <digit>*

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

<offset> ::= ( "+" | "-" ) <hour-offset> [ ":"? <minute-offset> ]
| <special-tz>
| <long-tz>

<hour-offset> ::= <digit>{1,2} ; 0–14
<minute-offset> ::= <digit>{2} ; 00/30/45

<special-tz> ::= "CST" | "UTC" | "GMT" | "ZULU" | "Z" ; case-insensitive
<long-tz> ::= ( ^<whitespace> )+ ; e.g. America/New_York

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

<whitespace> ::= " " | "\t" | "\n" | "\r" | "\v" | "\f"

<digit> ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"

<alpha> ::= "A" | … | "Z" | "a" | … | "z"
동작 변경

버전 4.0부터 <year> 부분은 2자리 또는 4자리 숫자 입력만 지원합니다. 구분자가 없는 날짜 또는 시간 입력에는 더 엄격한 규칙이 적용됩니다. 14자리 연속 정수 형식만 지원하며, 이 규칙은 엄격 모드에 적용되고 비엄격 모드에서도 그대로 적용됩니다.

각 필드를 파싱할 때 선행 영이 추가되어 허용 길이를 초과하는 입력은 더 이상 허용되지 않습니다. 예를 들어 00012는 <day> ::= <digit>{1,2}에 부합하지 않습니다.

예상하지 못한 공백을 만나면 이미 파싱한 필드로 결과를 채우지 않고, 다른 예상하지 못한 문자를 만났을 때와 마찬가지로 파싱에 실패합니다.

규칙 설명​

비엄격 모드에서는 엄격 모드가 지원하는 모든 형식을 파싱할 수 있으며, 위의 BNF 정의에 따른 파싱도 추가로 지원합니다.

전체 구조​
  • 날짜 부분은 필수이며, 시간 부분과 시간대 부분은 선택 사항입니다.

  • 문자열의 시작이나 끝에 모든 ASCII 공백 문자를 사용할 수 있습니다. 날짜와 시간은 공백 또는 대문자 'T'로 구분합니다. 입력 필드 사이의 구분자로는 숫자와 문자를 제외한 모든 기호를 사용할 수 있습니다. 시간대는 선택 사항입니다.

  • ASCII 문자만 허용됩니다. 입력 문자열에 ASCII가 아닌 문자가 포함되면 위의 BNF 정의를 충족하지 않으므로 형식 오류로 처리됩니다.

날짜 부분 <date> 및 시간 부분 <time>​
  • <separator>: 숫자와 문자를 제외한 모든 기호.

  • <year>: 2자리 또는 4자리 숫자.

    • 두 자리 연도(00-99): < 70 → 2000+두 자리 값, ≥ 70 → 1900+두 자리 값.

    • 네 자리 연도는 그대로 사용합니다.

  • <fraction>(선택 사항): 소수점 뒤에 오는 숫자로, 자릿수에 제한이 없습니다.

  • 그 외 숫자 필드: 1자리 또는 2자리 숫자.

시간대 부분 <timezone>(엄격 모드와 동일)​
  • 날짜와 시간대 사이에는 모든 공백 문자를 사용할 수 있습니다.

  • 대소문자를 구분하지 않습니다.

  • 다음 세 가지 유형을 허용합니다.

    1. 숫자 오프셋: (+|-)HH[:MM] 또는 (+|-)HHMM

      • <hour-offset>: 0–14. 한 자리 값에서는 앞의 0을 생략할 수 있습니다.

      • <minute-offset>: 00, 30 또는 45. ":"는 생략할 수 있습니다.

      • 숫자 오프셋의 최대 범위는 [-14:00, +14:00]입니다.

    2. 특수 UTC 식별자: Z/UTC/GMT/CST/ZULU. 각 기호가 나타내는 시간대 오프셋은 다음과 같습니다.

      • Z: +00:00

      • UTC: +00:00

      • GMT: +00:00

      • CST: +08:00

      • ZULU: +00:00

    3. 긴 형식의 시간대 이름: IANA가 관리하는 시간대 데이터베이스에 포함된 모든 유효한 시간대 이름을 허용합니다. 예를 들어 Europe/Paris, Etc/GMT+2 등이 있으며, 대소문자를 구분하지 않습니다.

      • 사용할 수 있는 시간대 이름은 시간대 문서를 참조하세요.
공백​
  • <whitespace>: 스페이스, 탭, 줄바꿈 등을 포함한 모든 공백 문자입니다.
파싱 로직​

위의 BNF 정의를 충족하는 모든 입력 문자열에 대해 Doris는 결과 Date의 해당 부분을 채웁니다. 예를 들어 결과의 연도 부분에는 일치하는 <year> 값을 설정하고, 마이크로초 부분에는 일치하는 <fraction> 값을 설정합니다. 입력에 없는 부분은 결과에서 0으로 설정됩니다.

자리 올림​
동작 변경

버전 4.0부터 DATE 타입을 파싱할 때 <date> 이외의 부분은 자리 올림을 발생시키거나 숫자 값에 영향을 주지 않습니다.

자리 올림은 발생하지 않습니다.

오류 처리​
  • 형식 오류: 입력이 위의 BNF 분기 중 어느 것과도 일치하지 않으면 NULL을 반환합니다.

  • 값 범위 오류: <date> 부분이 유효하지 않으면, 즉 유효한 그레고리력 날짜가 되지 않으면 NULL을 반환합니다.

동작 변경

버전 4.0부터 DATE 타입을 파싱할 때 <date> 이외의 부분에 값 범위 오류가 있어도 결과에 영향을 주지 않습니다.

예제​

현재 Doris 시간대가 UTC+8(+08:00)이라고 가정합니다. 시간대가 시간 타입 파싱에 미치는 영향은 시간대 문서를 참조하세요.

문자열DATE 변환 결과설명
2023-7-4T9-5-3.1Z2023-07-04앞뒤 공백이 있음. 날짜 2023-7-4(- 구분자, 한 자리 월/일 지원). 시간과 시간대가 유효함
99.12.31 23.59.59+05:301999-12-31.로 날짜와 시간을 구분. 시간대 +05:30(분 값 30은 유효함). 'T' 없음
2000/01/01T00/00/00-2302000-01-01/ 구분자. 콜론이 없고 시 값이 한 자리인 시간대 `-230'
85 1 1T0 0 0. CST1985-01-01모든 필드를 공백으로 구분. 두 자리 연도가 1985에 매핑됨. 소수점 뒤에 숫자가 없음. 짧은 시간대 이름은 대소문자를 구분하지 않음
2024-02-29T23:59:59.999999 UTC2024-02-29유효한 윤년. 고정밀 소수부에 의한 자리 올림 없음. 특정 시간대 이름 지정
70-01-01T00:00:00+141970-01-01두 자리 연도 1970. 허용되는 최대 오프셋 +14. 분 부분 없음
0023-1-1T1:2:3. -00:000023-01-01네 자리 연도 0023. 한 자리와 두 자리 시간 필드 혼합. 소수점 뒤에 숫자가 없음. 분에 부호가 없는 오프셋
2025/06/15T00:00:00.0-02025-06-15/ 구분자. 소수점 뒤에 숫자 한 자리. 오프셋 -0(-00:00과 동일)
2025/06/15T00:00:00.999999999992025-06-15소수 자릿수에 제한이 없으며 무시됨
2024-02-29T23-59-60ZULUNULL(형식 오류)초가 범위를 벗어남
2024 12 31T121212.123456 America/New_YorkNULL(형식 오류)구분자 없이 숫자로만 구성된 시간
123.123NULL(형식 오류)동작 변경: 이전에는 2012-03-12를 나타냈으나 이제 지원하지 않음.
12121NULL(형식 오류)동작 변경: 이전에는 2012-12-12를 나타냈으나 이제 지원하지 않음.

숫자 타입에서 변환​

모든 숫자 타입에서 DATE 타입으로 변환할 수 있습니다.

동작 변경

4.0부터 DECIMAL 타입은 리터럴 숫자 값에 따라 변환됩니다. Boolean에서 시간 타입으로의 변환은 지원하지 않습니다. 숫자 입력의 소수부 파싱을 지원합니다.

엄격 모드​

규칙 설명​

유효한 형식​

정수부는 가장 낮은 자릿수부터 높은 자릿수 순으로, 날짜의 맨 오른쪽부터 왼쪽으로 채웁니다. 다음은 유효한 형식과 각 형식에 따라 채워지는 결과입니다(마이크로초 부분 제외).

3-digit number (abc) => 2000 Year 0a Month bc Day
4-digit number (abcd) => 2000 Year ab Month cd Day
5-digit number (abcde) => 200a Year bc Month de Day
6-digit number (abcdef, where ab >= 70) => 19ab Year cd Month ef Day
6-digit number (abcdef, where ab < 70) => 20ab Year cd Month ef Day
8-digit number (abcdefgh) => abcd Year ef Month gh Day
14-digit number (abcdefghijklmn) => abcd Year ef Month gh Day
오류 처리​

규칙에 따라 입력을 파싱한 후 유효한 DATE 값을 만들 수 없으면 오류를 보고합니다.

예제​

숫자DATE 변환 결과설명
123.1232000-01-233자리 숫자
201501020304052015-01-0214자리 숫자
20150102030405.1234562015-01-0214자리 숫자, 유효한 소수부
20151231235959.999999999992015-12-3114자리 숫자, 유효한 소수부
1000오류2000-10-00의 일 값이 유효하지 않음
-123.123오류음수 시간으로는 유효한 날짜를 만들 수 없음

비엄격 모드​

오류 처리를 제외하면 비엄격 모드의 동작은 엄격 모드와 완전히 동일합니다.

규칙 설명​

유효한 형식​

정수부는 가장 낮은 자릿수부터 높은 자릿수 순으로, 날짜의 맨 오른쪽부터 왼쪽으로 채웁니다. 다음은 유효한 형식과 각 형식에 따라 채워지는 결과입니다(마이크로초 부분 제외).

3-digit number (abc) => 2000 Year 0a Month bc Day
4-digit number (abcd) => 2000 Year ab Month cd Day
5-digit number (abcde) => 200a Year bc Month de Day
6-digit number (abcdef, where ab >= 70) => 19ab Year cd Month ef Day
6-digit number (abcdef, where ab < 70) => 20ab Year cd Month ef Day
8-digit number (abcdefgh) => abcd Year ef Month gh Day
14-digit number (abcdefghijklmn) => abcd Year ef Month gh Day
오류 처리​

규칙에 따라 입력을 파싱한 후 유효한 DATE 값을 만들 수 없으면 NULL을 반환합니다.

예제​

숫자DATE 변환 결과설명
123.1232000-01-233자리 숫자
201501020304052015-01-0214자리 숫자
20150102030405.1234562015-01-0214자리 숫자, 유효한 소수부
20151231235959.999999999992015-12-3114자리 숫자, 유효한 소수부
1000NULL2000-10-00의 일 값이 유효하지 않음
-123.123NULL음수 시간으로는 유효한 날짜를 만들 수 없음

날짜/시간 계열 타입에서 변환​

Datetime 및 Time 타입에서 Date 타입으로 변환할 수 있습니다.

Datetime​

규칙 설명​

Datetime에서 변환하면 결과는 입력의 날짜 부분입니다. 이 변환은 항상 유효합니다.

예제​

입력 DatetimeDate 변환 결과
2012-02-05 12:35:24.1234562012-02-05

Time​

규칙 설명​

Time에서 변환하면 결과는 현재 날짜에 Time 입력을 더한 값입니다. 이 변환은 예측 가능한 미래(9999년 십이월 이전)까지 유효하므로 Doris는 항상 유효한 변환으로 간주합니다.

예제​

현재 날짜가 2025-04-29라고 가정하면 다음과 같습니다.

입력 TimeDate 변환 결과
500:00:002025-05-19
23:59:592025-04-29
-128:00:002025-04-23

TIMESTAMP_NS​

규칙 설명​

TIMESTAMP_NS에서 변환할 때 Doris는 날짜 부분을 반환하고, 시간과 초의 소수부는 반올림 없이 버립니다. 유효한 모든 TIMESTAMP_NS 값은 DATE 범위 내에 있으므로 엄격 모드와 비엄격 모드 모두에서 변환이 항상 성공합니다. NULL을 입력하면 NULL을 반환합니다.

예제​

입력 TIMESTAMP_NSDATE 변환 결과
1677-09-21 00:12:43.1452241921677-09-21
1969-12-31 23:59:59.9999999991969-12-31
2024-02-29 12:34:56.1234567892024-02-29
2262-04-11 23:47:16.8547758072262-04-11