INTERVAL 데이터 유형에는 시간 간격이 포함됩니다. 다음과 같이 다수의 부속 유형이 있습니다.
이러한 모든 부속 유형은 시간 간격을 설명하고 모두 INTERVAL 유형의 전체 조작 범위에 참여할 수 있습니다(예: 유형 DATE, TIME 또는 TIMESTAMP 값을 사용한 덧셈 및 뺄셈 조작).
연도 및 월 또는 월로 설명된 간격은 일, 시간, 분 및 초로 설명된 간격으로 변환할 수 없다는 점을 제외하고 CAST 기능을 사용하여 한 부속 유형에서 다른 부속 유형으로 변환할 수 있습니다.
각 월의 일 수가 다르므로 월과 일이 분할됩니다. 한달과 하루의 간격은 의미가 없으므로, 일 수에 해당하는 간격으로 변환할 수 없습니다.
간격 리터럴은 다음 구문으로 정의됩니다.
INTERVAL <interval string> <interval qualifier>
간격 문자열 및 간격 규정자의 형식은 다음 표에 따라 정의됩니다.
간격 규정자 | 간격 문자열 형식 | 예 |
---|---|---|
YEAR | '<year>' 또는 '<sign> <year>' | '10' 또는 '-10' |
YEAR TO MONTH | '<year>-<month>' 또는 '<sign> <year>-<month>' | '2-06' 또는 '- 2-06' |
MONTH | '<month>' 또는 '<sign> <month>' | '18' 또는 '-18' |
DAY | '<day>' 또는 '<sign> <day>' | '30' 또는 '-30' |
DAY TO HOUR | '<day> <hour>' 또는 <sign> <day> <hour>' | '1 02' 또는 '-1 02' |
DAY TO MINUTE | '<day> <hour>:<minute>' 또는 '<sign> <day> <hour>:<minute>' | '1 02:30' 또는 '-1 02:30' |
DAY TO SECOND | '<day> <hour>:<minute>:<second>' 또는 '<sign> <day> <hour>:<minute>:<second>' | '1 02:30:15' 또는 '-1 02:30:15.333' |
HOUR | '<hour>' 또는 '<sign> <hour>' | '24' 또는 '-24' |
HOUR TO MINUTE | '<hour>:<minute>' 또는 '<sign> <hour>:<minute>' | '1:30' 또는 '-1:30' |
HOUR TO SECOND | '<hour>:<minute>:<second>' 또는 '<sign> <hour>:<minute>:<second>' | '1:29:59' 또는 '-1:29:59.333' |
MINUTE | '<minute>' 또는 '<sign> <minute>' | '90' 또는 '-90' |
MINUTE TO SECOND | '<minute>:<second>' 또는 '<sign> <minute>:<second>' | '89:59' 또는 '-89:59' |
SECOND | '<second>' 또는 '<sign> <second>' | '15' 또는 '-15.7' |
간격에 연도와 월 값이 포함되면, 두 값 사이에 하이픈이 사용됩니다. 이 경우, 월 값은 [0, 11] 범위에 있어야 합니다. 간격에 월 값이 포함되고 연도 값이 포함되지 않으면, 월 값이 제한되지 않습니다.
공백은 나머지 간격과 일을 분리하는 데 사용됩니다.
간격에 둘 이상의 HOUR, MINUTE 및 SECOND가 포함되면 콜론으로 값을 분리하고 맨 왼쪽을 제외한 모든 값은 다음과 같이 제한됩니다.
간격에서 가장 왼쪽 값의 최대 값은 +/- 2147483647입니다.
올바른 간격 값의 일부 예는 다음과 같습니다.
올바른 간격 값의 일부 예는 다음과 같습니다.
일 필드가 지정되므로 시간 필드는 [0,23]으로 제한됩니다.
시간 필드가 지정되므로 분 필드는 [0,59]로 제한됩니다.
다음은 간격 리터럴의 일부 예입니다.
INTERVAL '1' HOUR INTERVAL '90' MINUTE INTERVAL '1-06' YEAR TO MONTH