날짜 시간 값
날짜 및 시간 데이터 유형은 DATE, TIME 및 TIMESTAMP입니다. 날짜 시간 값은 특정 산술 및 문자열 조작에 사용될 수 있고, 특정 문자열과 호환 가능하더라도 문자열이나 숫자는 아닙니다.
날짜
- 월 파트의 범위는 1 - 12입니다.
- 일 파트의 범위는 1 - x이며 여기서 x는 28, 29, 30 또는 31이고 월에 따라 다릅니다.
- 연도 파트의 범위는 로컬 테이블의 경우 0001 - 9999입니다.
날짜의 내부 표현은 4바이트의 문자열입니다. 각 바이트는 2개의 압축 10진수로 구성됩니다. 첫 번째 2바이트는 연을 나타내고, 세 번째 바이트는 월, 그리고 마지막 바이트는 일입니다.
SQLDA에 설명된 대로 DATE 컬럼의 길이는 10바이트입니다. 이는 값의 문자열 표현에 적당한 길이입니다.
시간
- 시 파트의 범위는 0 - 24입니다.
- 분 및 초 파트의 범위는 0 - 59입니다.
시간의 내부 표현은 3바이트의 문자열입니다. 각 바이트는 2개의 압축 10진수로 구성됩니다. 첫 번째 바이트는 시간을 나타내고, 두 번째 바이트는 분, 마지막 바이트는 초입니다.
SQLDA에 설명된 대로 TIME 컬럼의 길이는 8바이트입니다. 이는 값의 문자열 표현에 적당한 길이입니다.
시간소인
시간소인의 내부 표현은 7 - 13바이트의 문자열입니다. 각 바이트는 2개의 압축 10진수로 구성됩니다. 처음 4바이트는 날짜, 다음 3바이트는 시간, 마지막 0 - 6바이트는 초의 소수를 나타냅니다.
SQLDA에 설명된 대로 TIMESTAMP 컬럼의 길이는 19 - 32바이트이며 값의 문자열 표시에 적절한 길이입니다.
날짜 시간 값의 문자열 표현
데이터 유형이 DATE, TIME 또는 TIMESTAMP인 값은 사용자에 투명한 내부 양식으로 표시됩니다. 그러나, 날짜, 시간 및 시간소인 값은 또한 문자열로 표시될 수도 있습니다. 이는 데이터 유형이 DATE, TIME 또는 TIMESTAMP인 상수나 변수가 없기 때문에 유용합니다. 검색하려면 먼저 날짜 시간 값을 문자열 변수에 지정해야 합니다. CHAR 함수 또는 GRAPHIC 함수(유니코드 데이터베이스 전용)는 날짜 시간 값을 문자열 표현으로 변경하기 위해 사용할 수 있습니다. 문자열 표현은 프로그램이 프리컴파일되거나 데이터베이스에 바인드될 때 DATETIME 옵션의 스펙으로 겹쳐쓰기되지 않는 한 일반적으로 애플리케이션의 지역 코드와 연관된 날짜 시간 값의 기본 형식입니다.
길이와 관계 없이 대형 오브젝트(LOB)는 날짜 시간 값(SQLSTATE 42884)의 문자열 표현으로 사용될 수 없습니다.
날짜 시간 값의 유효한 문자열 표현이 내부 날짜 시간 값과 함께 조작에 사용되면, 문자열 표현은 조작이 수행되기 전에 날짜, 시간 또는 시간소인 값의 내부 양식으로 변환됩니다.
날짜, 시간 및 시간소인 문자열에는 문자와 숫자만을 포함해야 합니다.
날짜 문자열
| 형식 이름 | 약어 | 날짜 형식 | 예 |
|---|---|---|---|
| 국제 표준화 기구(구분자 포함) | ISO | yyyy-MM-dd | '2018-10-27' |
| 국제 표준화 기구(구분자 없음)1 | - | yyyyMMdd | '20181027' |
| IBM® USA 표준 | 미국 | MM/dd/yyyy | '10/27/2018' |
| IBM 유럽 표준 | EUR | dd.MM.yyyy | '27.10.2018' |
| 일본 산업 표준 서력 기원 | JIS | yyyy-MM-dd | '2018-10-27' |
| Netezza1 | - | dd-MON-yy | '12-FEB-16' |
| 사이트 정의 | LOC | 애플리케이션의 지역 코드에 달려 있음 | - |
| 1 이 형식은 출력 값 또는 상수가 아닌 입력 값에만 사용할 수 있습니다. | |||
- 후미 공백을 포함할 수 있습니다.
- 앞에 나오는 0은 월과 일 부분에서는 생략될 수 있습니다.
시간 문자열
| 형식 이름 | 약어 | 시간 형식 | 예 |
|---|---|---|---|
| 국제 표준화 기구 | ISO | hh.mm 또는 hh.mm.ss | '13.30.05' |
| IBM USA 표준 | 미국 | hh 또는 hh:mm AM or PM | '1:30 PM' |
| IBM 유럽 표준 | EUR | hh.mm 또는 hh.mm.ss | '13.30.05' |
| 일본 산업 표준 서력 기원 | JIS | hh:mm 또는 hh:mm:ss | '13:30:05' |
| 사이트 정의 | LOC | 애플리케이션의 지역 코드에 달려 있음 | - |
- 후미 공백을 포함할 수 있습니다.
- 시간에서 앞에 나오는 0을 생략할 수 있습니다.
- 내재된 스펙 0 초가 가정되는 경우 초를 생략할 수 있습니다(예를 들어, 13:30은 13:30:00과 동일함).
- 국제 표준화 기구는 일본 산업 표준 서력 기원 형식과 동일하도록 시간 형식을 변경했습니다. 그러므로 애플리케이션에 현재 국제 표준화 기구 형식이 필요한 경우에는 JIS 형식을 사용하십시오.
- USA 형식의 경우,
- 내재된 스펙 00 분이 가정되는 경우 분을 생략할 수 있습니다(예를 들어, 1PM은 1:00 PM과 동일함).
- 시간은 00:00 AM의 특수한 경우를 제외하고 12보다 크지 않아야 하며 0이 될 수 없습니다.
- 'AM' 또는 'PM' 전에는 하나의 공백이 있습니다.
- 'AM' 또는 'PM'은 소문자 또는 대문자로 표시할 수 있습니다.
- 다음 표는 USA 형식이 JIS 형식에 부합되는 방법을 표시합니다.
USA 형식 JIS 형식 12:01 AM - 12:59 AM 00:01:00 - 00:59:00 01:00 AM - 11:59 AM 01:00:00 - 11:59:00 12:00 PM(정오) - 11:59 PM 12:00:00 - 23:59:00 12:00 AM(자정) 24:00:00 00:00 AM(자정) 00:00:00
시간소인 문자열
| 형식 이름 | 시간소인 형식 | 예 |
|---|---|---|
| 내부(전체 초) | yyyy-MM-dd-hh.mm.ss | '2018-03-22-12.00.00' |
| 내부(소수 초) | yyyy-MM-dd-hh.mm.ss.SSSSSSSSSSSS | '2018-03-22-12.00.00.000000000005' |
| ODBC(전체 초)1 | yyyy-MM-dd hh:mm:ss | '2018-03-22 08:30:58' |
| ODBC(소수 초)1 | yyyy-MM-dd hh:mm:ss.SSSSSSSSSSSS | '2018-03-22 08:30:58.000000000005' |
| Netezza1 | yyyyMMdd hh:mm:ss AM 또는 PM | '20180101 12:00:59 PM' |
| 구분 기호 없음 | yyyyMMddhhmmss | '20180322120000' |
| 구분 기호 없음(소수 초) | yyyyMMddhhmmssSSSSSSSSSSSS | '20180322120000123456123456' |
| 1 이 형식은 출력 값 또는 상수가 아닌, 입력 값에만 사용할 수 있습니다. 시간소인의 날짜 및 시간 부분이 여기에 공백으로 구분되어 표시됩니다. 하이픈 또는 문자 T로 구분될 수도 있습니다. 예를 들어, '2018-03-22 08:30:58.7', '2018-03-22-08:30:58.7' 및 '2018-03-22T08:30:58.7'은 모두 동등합니다. | ||
- 초는 최대 12자리의 소수로 지정할 수 있습니다.
- 뒤에 나오는 0은 소수 초에서 잘리거나 전체 생략될 수 있습니다.
- 앞에 나오는 0은 시간소인의 월, 일 및 시간 파트에서 생략될 수 있습니다.
- 문자열에는 수에 관계없이 뒤 공백을 사용할 수 있습니다.
- 시간소인의 문자열 표현이 TIMESTAMP 데이터 유형이 있는 값으로 내재된 캐스트이면
캐스트 결과의 정밀도는 표현식의 TIMESTAMP 피연산자의 정밀도 또는 지정에서
TIMESTAMP 대상의 정밀도에 의해 판별됩니다.
- 캐스트의 정밀도를 초과하는 소수 초의 자릿수는 문자열에서 잘립니다. 예를 들어, 문자열 '2018-3-2-8.30.00297'이 TIMESTAMP(3)으로 캐스트되는 경우 결과는 2018-03-02-08.30.00.002입니다.
- 캐스트의 정밀도가 문자열의 정밀도를 초과하는 경우 결과는 0으로 채워집니다. 예를 들어, 문자열 '2018-3-2-8.30.07'이 TIMESTAMP(12)로 캐스트되는 경우 결과는 2018-03-02-08.30.00.070000000000입니다.
- 시간소인의 문자열 표현에는 값을 지정된 정밀도가 있는 시간소인으로 명시적으로 캐스팅하여 다른 시간소인 정밀도가 제공될 수 있습니다. 문자열이 상수인 경우에는 대안은 문자열 상수 앞에 TIMESTAMP 키워드를 두는 것입니다. 예를 들어, TIMESTAMP '2018-03-28 14:50:35.123'에는 TIMESTAMP(3) 데이터 유형이 있습니다.