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>
-
날짜와 시간대 사이에는 모든 공백 문자를 사용할 수 있습니다.
-
대소문자를 구분하지 않습니다.
-
다음 세 가지 유형이 허용됩니다.
-
숫자 오프셋:
(+|-)HH[:MM]또는(+|-)HHMM등.-
<hour-offset>: 0–14이며, 한 자리 값에서는 앞의 0을 생략할 수 있습니다. -
<minute-offset>: 00, 30 또는 45이며, ":"는 생략할 수 있습니다. -
숫자 오프셋의 최대 범위는
[-14:00, +14:00]입니다.
-
-
특수 UTC 식별자:
Z/UTC/GMT/CST/ZULU. 각 기호가 나타내는 시간대 오프셋은 다음과 같습니다.-
Z: +00:00 -
UTC: +00:00 -
GMT: +00:00 -
CST: +08:00 -
ZULU: +00:00
-
-
긴 형식의 시간대 이름: 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:00 | 2023-07-16 | 구분자가 있는 날짜 + 'T' + 초 및 밀리초 + 숫자 오프셋 |
2023-07-16T19+08:00 | 2023-07-16 | 분과 초를 생략한 이어 붙인 시간 형식. UTC+8로 변환해도 결과가 같음. |
2023-07-16T1920+08:00 | 2023-07-16 | 초를 생략한 이어 붙인 시간 형식. UTC+8로 변환해도 결과가 같음. |
70-1-1T00:00:00-0000 | 1970-01-01 | 두 자리 연도 + 한 자리/두 자리 월/일 + 구분자 + 이어 붙인 오프셋 |
19991231T235960.5UTC | 1999-12-31 | 이어 붙인 날짜 + 'T' + 이어 붙인 시간 + 소수 부분 + UTC |
2024-02-29 12:00:00 Europe/Paris | 2024-02-29 | 유효한 윤년 날짜 + 공백 + 완전한 시간 + 공백 + 시간대 이름 |
2024-05-01T00:00Asia/Shanghai | 2024-05-01 | 불완전한 시간 + 시간대 이름 |
20231005T081530Europe/London | 2023-10-05 | 이어 붙인 날짜 + 시간대 이름 |
85-12-25T0000gMt | 1985-12-25 | 대소문자가 섞인 시간대 |
2024-05-01 | 2024-05-01 | 날짜만 있음 |
24-5-1 | 2024-05-01 | 2자리 연도 + 1자리 월 + 1자리 일 |
2024-05-01 0:1:2.333 | 2024-05-01 | 이어 붙인 날짜 + 'T' + 한 자리 시/분/초 + 밀리초 |
2024-05-01 0:1:2. | 2024-05-01 | 이어 붙인 날짜 + 'T' + 한 자리 시/분/초 + 소수점만 있음 |
20240501 01 | 2024-05-01 | 이어 붙인 날짜 + ' ' + 분과 초 생략 |
20230716 1920Z | 2023-07-16 | 이어 붙인 날짜 + 공백 + 이어 붙인 시/분 + UTC 'Z' |
20240501T0000 | 2024-05-01 | 이어 붙인 날짜 + 'T' + 초를 생략한 이어 붙인 시간 |
2024-12-31 23:59:59.9999999 | 2024-12-31 | 구분자가 있는 날짜 + 공백 + 밀리초가 있는 시간, 시간 부분은 무시됨 |
2025/06/15T00:00:00.99999999999999 | 2025-06-15 | 소수 자릿수에 제한이 없음 |
2020-12-12 13:12:12-03:00 | 2020-12-12 | 자리 올림 없음 |
0023-01-01T00:00Z | 0023-01-01 | 유효한 네 자리 연도 |
69-12-31 | 1969-12-31 | 두 자리 연도 69 → 1969-12-31 |
70-01-01 | 1970-01-01 | 두 자리 연도 70 → 1970-01-01 |
230102 | 2023-01-02 | 짧은 연도를 사용한 이어 붙인 DATE 형식 |
19230101 | 1923-01-01 | 긴 연도를 사용한 이어 붙인 DATE 형식 |
120102030405 | 오류(형식 오류) | DATE - TIME 구분자 누락 |
20120102030405.123 +08 | 2012-01-02 | 14자리로 이어 붙인 날짜 + 소수 부분 + 짧은 시간대 오프셋 |
120102030405.999 | 오류(형식 오류) | DATE - TIME 구분자 누락 |
2020-05-05 12:30:60 | 2020-05-05 | 초가 유효하지 않지만 DATE 해석에는 포함되지 않음 |
2023-07-16T19.123+08:00 | 오류(형식 오류) | 날짜에 연속되지 않은 필드가 포함됨(시 + 밀리초에서 분과 초를 건너뜀) |
2024/05/01 | 2024-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>(엄격 모드와 동일)
-
날짜와 시간대 사이에는 모든 공백 문자를 사용할 수 있습니다.
-
대소문자를 구분하지 않습니다.
-
다음 세 가지 유형이 허용됩니다.
-
숫자 오프셋:
(+|-)HH[:MM]또는(+|-)HHMM-
<hour-offset>: 0–14이며, 한 자리 값에서는 앞의 0을 생략할 수 있습니다. -
<minute-offset>: 00, 30 또는 45이며, ":"는 생략할 수 있습니다. -
숫자 오프셋의 최대 범위는
[-14:00, +14:00]입니다.
-
-
특수 UTC 식별자:
Z/UTC/GMT/CST/ZULU. 각 기호가 나타내는 시간대 오프셋은 다음과 같습니다.-
Z: +00:00 -
UTC: +00:00 -
GMT: +00:00 -
CST: +08:00 -
ZULU: +00:00
-
-
긴 형식의 시간대 이름: 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.1Z | 2023-07-04 | 앞뒤 공백; 날짜 2023-7-4(- 구분자, 한 자리 월/일 지원); 시간과 시간대가 유효함 |
99.12.31 23.59.59+05:30 | 1999-12-31 | .으로 날짜와 시간을 구분; 시간대 +05:30(분 값 30은 유효함); 'T' 없음 |
2000/01/01T00/00/00-230 | 2000-01-01 | / 구분자; 콜론이 없고 시가 한 자리인 시간대 `-230' |
85 1 1T0 0 0. CST | 1985-01-01 | 모든 필드가 공백으로 구분됨; 두 자리 연도가 1985로 매핑됨; 소수점 뒤에 숫자가 없음; 짧은 시간대 이름은 대소문자를 구분하지 않음 |
2024-02-29T23:59:59.999999 UTC | 2024-02-29 | 유효한 윤년; 고정밀 소수 부분은 자리 올림을 발생시키지 않음; 특정 시간대 이름 |
70-01-01T00:00:00+14 | 1970-01-01 | 두 자리 연도 1970; 허용되는 최대 오프셋 +14; 분 부분 없음 |
0023-1-1T1:2:3. -00:00 | 0023-01-01 | 네 자리 연도 0023; 한 자리/두 자리 시간 필드 혼용; 소수점 뒤에 숫자가 없음; 분에 부호가 없는 오프셋 |
2025/06/15T00:00:00.0-0 | 2025-06-15 | / 구분자; 소수점 뒤 한 자리; 오프셋 -0(-00:00과 같음) |
2025/06/15T00:00:00.99999999999 | 2025-06-15 | 소수 자릿수에 제한이 없으며 무시됨 |
2024-02-29T23-59-60ZULU | NULL(형식 오류) | 초가 범위를 벗어남 |
2024 12 31T121212.123456 America/New_York | NULL(형식 오류) | 구분자 없이 숫자로만 이루어진 시간 |
123.123 | NULL(형식 오류) | 동작 변경: 이전에는 2012-03-12를 나타냈으나 이제 지원되지 않음. |
12121 | NULL(형식 오류) | 동작 변경: 이전에는 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.123 | 2000-01-23 | 3자리 숫자 |
20150102030405 | 2015-01-02 | 14자리 숫자 |
20150102030405.123456 | 2015-01-02 | 14자리 숫자, 유효한 소수 부분 |
20151231235959.99999999999 | 2015-12-31 | 14자리 숫자, 유효한 소수 부분 |
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.123 | 2000-01-23 | 3자리 숫자 |
20150102030405 | 2015-01-02 | 14자리 숫자 |
20150102030405.123456 | 2015-01-02 | 14자리 숫자, 유효한 소수 부분 |
20151231235959.99999999999 | 2015-12-31 | 14자리 숫자, 유효한 소수 부분 |
1000 | NULL | 2000-10-00의 일 값이 유효하지 않음 |
-123.123 | NULL | 음수 시간으로는 유효한 날짜를 만들 수 없음 |
날짜 계열 타입에서 변환
Datetime 및 Time 타입에서 Date 타입으로의 변환을 지원합니다.
Datetime
규칙 설명
Datetime에서 변환하면 입력의 날짜 부분이 결과가 됩니다. 이 변환은 항상 유효합니다.
예제
| 입력 Datetime | Date로 변환한 결과 |
|---|---|
2012-02-05 12:35:24.123456 | 2012-02-05 |
Time
규칙 설명
Time에서 변환하면 현재 날짜와 입력 Time 값을 더한 값이 결과가 됩니다. 이 변환은 예측 가능한 미래(9999년 십이월 이전)까지 유효하므로 Doris는 항상 유효한 것으로 간주합니다.
예제
현재 날짜가 2025-04-29라고 가정하면 다음과 같습니다.
| 입력 Time | Date로 변환한 결과 |
|---|---|
500:00:00 | 2025-05-19 |
23:59:59 | 2025-04-29 |
-128:00:00 | 2025-04-23 |