포스트그레SQL전체 지원 세트SQL배트맨 토토와 시간 유형, 다음에 표시됨표 8-9. 이러한 데이터 유형에 사용할 수 있는 작업은에 설명되어 있습니다.PostgreSQL : 문서 : 8.1 : 날짜/토토 사이트 기능 및 연산자.
표 8-9. 배트맨 토토/시간 유형
| 이름 | 저장소 크기 | 설명 | 낮은 가치 | 높은 가치 | 해결 |
|---|---|---|---|---|---|
| 타임스탬프 [ (p) ] [ 시간대 없음 ] | 8바이트 | 배트맨 토토 및 시간 모두 | 기원전 4713년 | 5874897 서기 | 1마이크로초/14자리 |
| 타임스탬프 [ (p) ] 시간대 포함 | 8바이트 | 배트맨 토토 및 시간 모두, 시간대 포함 | 기원전 4713년 | 5874897 서기 | 1마이크로초/14자리 |
| 간격 [ (p) ] | 12바이트 | 시간 간격 | -178000000년 | 178000000년 | 1마이크로초/14자리 |
| 배트맨 토토 | 4바이트 | 배트맨 토토만 | 기원전 4713년 | 5874897 광고 | 1일 |
| 시간 [ (p) ] [ 시간대 없음 ] | 8바이트 | 시간만 해당 | 00:00:00 | 24:00:00 | 1마이크로초/14자리 |
| 시간 [ (p) ] 시간대 포함 | 12바이트 | 시간대만, 시간대 포함 | 00:00:00+1359 | 24:00:00-1359 | 1마이크로초/14자리 |
참고:이전PostgreSQL7.3, 그냥 작성타임스탬프와 동일함시간대가 포함된 타임스탬프. 이것은 다음으로 변경되었습니다. SQL 규정 준수.
시간, 타임스탬프, 그리고간격선택적 정밀도 허용 값p다음을 지정합니다. 초 필드에 유지되는 소수 자릿수입니다. 에 의해 기본적으로 정밀도에는 명시적인 제한이 없습니다. 허용된 범위p는 0부터 6까지입니다.타임스탬프그리고간격유형.
참고:언제타임스탬프값 배정밀도 부동 소수점 숫자로 저장됩니다. (현재 기본값) 정밀도의 유효 한계는 6 미만이어야 합니다.타임스탬프값은 다음과 같습니다 2000년 1월 1일 자정 전후의 초 단위로 저장됩니다. 몇 년 이내의 배트맨 토토에 대해 마이크로초 정밀도가 달성됩니다. 2000-01-01년이지만 배트맨 토토의 정밀도가 저하됩니다. 더 멀리. 언제타임스탬프값은 다음과 같습니다 8바이트 정수로 저장됩니다(컴파일 타임 옵션). 마이크로초 정밀도는 전체 범위에서 사용할 수 있습니다. 가치. 그러나 8바이트 정수 타임스탬프에는 더 많은 정보가 있습니다. 위에 표시된 배트맨 토토보다 제한된 범위의 배트맨 토토: 기원전 4713년부터 최대 서기 294276년. 동일한 컴파일 타임 옵션도 다음을 결정합니다. 이든시간그리고간격값은 부동 소수점 또는 8바이트 정수. 부동 소수점의 경우, 큰간격값의 정밀도가 다음과 같이 저하됩니다. 간격의 크기가 증가합니다.
다음을 위해시간유형, 허용 범위p8바이트인 경우 0부터 6까지입니다. 정수 저장이 사용되며, 부동 소수점일 경우 0부터 10까지입니다. 저장용량이 사용됩니다.
유형시간대 포함 시간정의됨 SQL 표준에 따라 정의되지만 정의는 다음과 같은 속성을 나타냅니다. 의심스러운 유용성을 초래합니다. 대부분의 경우 다음의 조합은배트맨 토토, 시간, 시간대가 없는 타임스탬프및시간대가 포함된 타임스탬프전체를 제공해야 합니다. 모든 애플리케이션에 필요한 배트맨 토토/시간 기능 범위
유형절대그리고상대시간은 정밀도가 낮은 유형으로 사용됩니다. 내부적으로. 새 항목에서는 이러한 유형을 사용하지 않는 것이 좋습니다. 응용 프로그램이 있는 경우 이전 응용 프로그램을 옮기는 것이 좋습니다. 적절한. 이러한 내부 유형 중 일부 또는 전부가 사라질 수 있습니다. 향후 릴리스에서.
배트맨 토토 및 시간 입력은 거의 모든 합리적인 방식으로 허용됩니다. ISO 8601을 포함한 형식SQL-호환, 전통포스트그레스및 기타. 일부 형식의 경우 배트맨 토토 입력의 월, 일, 연도 순서가 모호하고 이들의 예상 순서를 지정하는 지원이 있습니다. 전지. 설정배트맨 토토 스타일매개변수 ~MDY선택하다 월-일-년 해석,DMY에 일-월-년 해석을 선택하거나YMD년-월-일 해석을 선택합니다.
PostgreSQL더 유연해졌습니다. 배트맨 토토/시간 입력을 처리할 때SQL표준이 필요합니다. 보다부록 B정확한 분석을 위해 배트맨 토토/시간 입력 규칙 및 인식된 텍스트 필드에 대한 규칙 월, 요일, 시간대를 포함합니다.
모든 배트맨 토토 또는 시간 리터럴 입력은 다음과 같아야 함을 기억하십시오. 텍스트 문자열처럼 작은따옴표로 묶습니다. 참조섹션 4.1.2.5더 많은 정보를 원하시면.SQL다음 구문이 필요합니다
유형 [ (p) ] '값'
어디에서p선택사항 정밀도 사양은 다음에 해당하는 정수입니다. 초 필드의 소수 자릿수입니다. 정밀 캔 에 대해 지정되다시간, 타임스탬프및간격유형. 허용되는 값은 위에 언급되어 있습니다. 정밀도가 없으면 상수 사양에 지정되면 기본값은 리터럴 값의 정밀도.
테이블 8-10다음에 대한 몇 가지 가능한 입력을 표시합니다.배트맨 토토유형.
표 8-10. 배트맨 토토 입력
| 예 | 설명 |
|---|---|
| 1999년 1월 8일 | 어떠한 경우에도 명확함배트맨 토토 스타일입력 모드 |
| 1999-01-08 | ISO 8601; 1월 8일 모든 모드에서(권장) 체재) |
| 1/8/1999 | 1월 8일MDY모드; 8월 1일DMY모드 |
| 1/18/1999 | 1월 18일MDY모드; 다른 모드에서는 거부됨 |
| 01/02/03 | 2003년 1월 2일MDY모드; 2003년 2월 1일DMY모드; 2001년 2월 3일YMD모드 |
| 1999년 1월 8일 | 모든 모드에서 1월 8일 |
| 1999년 1월 8일 | 모든 모드에서 1월 8일 |
| 1999년 1월 8일 | 모든 모드에서 1월 8일 |
| 99년 1월 8일 | 1월 8일YMD모드, 그렇지 않으면 오류 |
| 08-1-99 | 1월 8일, 오류 제외YMD모드 |
| 1월 08-99 | 1월 8일, 오류 제외YMD모드 |
| 19990108 | ISO 8601; 1999년 1월 8일, 모든 모드에서 |
| 990108 | ISO 8601; 1999년 1월 8일, 모든 모드에서 |
| 1999.008 | 연도 및 일 |
| J2451187 | 율리우스력의 날 |
| 기원전 99년 1월 8일 | 서기 99년 |
시간 유형은 다음과 같습니다.시간 [ (p) ] 시간대 없음그리고시간 [ (p) ] 시간대 포함. 그냥 쓰고 있어요시간다음과 동일함시간대가 없는 시간.
이러한 유형에 대한 유효한 입력은 시간으로 구성됩니다. 그 뒤에 선택적 시간대가 옵니다. (보다테이블 8-11그리고테이블 8-12.) 입력에 시간대가 지정된 경우시간대가 없는 시간조용히 무시됩니다.
표 8-11. 시간 입력
| 예 | 설명 |
|---|---|
| 04:05:06.789 | ISO 8601 |
| 04:05:06 | ISO 8601 |
| 04:05 | ISO 8601 |
| 040506 | ISO 8601 |
| 오전 04:05 | 04:05와 동일; AM은 가치에 영향을 미치지 않습니다. |
| 오후 4시 5분 | 16:05와 동일; 입력 시간은 <= 12여야 합니다. |
| 04:05:06.789-8 | ISO 8601 |
| 04:05:06-08:00 | ISO 8601 |
| 04:05-08:00 | ISO 8601 |
| 040506-08 | ISO 8601 |
| 04:05:06 PST | 이름으로 지정된 시간대 |
표 8-12. 시간대 입력
| 예 | 설명 |
|---|---|
| PST | 태평양 표준시 |
| -8:00 | PST용 ISO-8601 오프셋 |
| -800 | PST용 ISO-8601 오프셋 |
| -8 | PST용 ISO-8601 오프셋 |
| 줄루 | UTC의 군사 약어 |
| z | 약식줄루 |
참조PostgreSQL : 문서 : 8.1 : 날짜/토토 결과 지원인식되는 시간대 이름 목록 입력.
타임스탬프 유형에 대한 유효한 입력은 다음으로 구성됩니다. 배트맨 토토와 시간을 연결하고 그 뒤에 선택사항을 붙임 시간대, 그 뒤에 선택사항AD또는BC. (또는,AD/BC시간대 앞에 나타날 수 있지만 이는 선호하는 순서는 아닙니다.) 따라서
1999-01-08 04:05:06
그리고
1999-01-08 04:05:06 -8:00
다음의 유효한 값입니다.ISO8601 표준. 또한, 광범위한 형식
1999년 1월 8일 04:05:06 PST
지원됩니다.
그SQL표준 차별화시간이 없는 타임스탬프 존그리고시간대가 포함된 타임스탬프a의 존재에 의한 리터럴"+"또는"-". 따라서, 기준,
타임스탬프 '2004-10-19 10:23:54'
은시간대가 없는 타임스탬프, 하는 동안
타임스탬프 '2004-10-19 10:23:54+02'
은시간대가 포함된 타임스탬프. PostgreSQL절대 검사하지 않음 유형을 결정하기 전에 리터럴 문자열의 내용, 따라서 위의 두 가지를 모두 다음과 같이 처리합니다.시간대가 없는 타임스탬프. 다음을 보장하려면 리터럴은 다음과 같이 처리됩니다.시간이 포함된 타임스탬프 존, 올바른 명시적 유형을 지정하세요.
시간대 '2004-10-19 10:23:54+02'가 포함된 타임스탬프
다음으로 결정된 리터럴에서시간대가 없는 타임스탬프, PostgreSQL언제든지 조용히 무시할 것입니다 구역 표시. 즉, 결과 값은 다음에서 파생됩니다. 입력 값의 배트맨 토토/시간 필드이며 조정되지 않습니다. 시간대에 대해.
용시간대가 포함된 타임스탬프, 내부적으로 저장된 값은 항상 UTC(Universal 전통적으로 그리니치 표준시로 알려진 협정시GMT). 다음과 같은 입력 값 명시적인 시간대가 지정되어 있는 경우 다음을 사용하여 UTC로 변환됩니다. 해당 시간대에 대한 적절한 오프셋입니다. 시간대가 없는 경우 입력 문자열에 명시된 경우 해당 문자열은 시스템이 나타내는 시간대시간대매개변수이며,에 대한 오프셋을 사용하여 UTC로 변환됩니다.시간대구역.
언제시간대가 포함된 타임스탬프값이 출력되면 항상 UTC에서 UTC로 변환됩니다. 현재의시간대영역 및 표시됨 해당 지역의 현지 시간으로 표시됩니다. 다른 시간의 시간을 보려면 영역, 변경 중 하나시간대또는 사용 그만큼시간대구성(참조섹션 9.9.3).
전환 사이타임스탬프 없음 시간대그리고시간이 포함된 타임스탬프 존일반적으로 다음과 같이 가정합니다.타임스탬프 시간대 없음값은 다음과 같이 취하거나 주어져야 합니다.시간대현지 시간. 다른 다음을 사용하여 변환을 위해 영역 참조를 지정할 수 있습니다.시간대.
간격값은 다음으로 쓸 수 있습니다. 다음 구문:
[@] 수량 단위 [수량 단위...] [방향]
어디:수량은 번호(서명되었을 수도 있음);단위is마이크로초, 밀리초, 초, 분, 시간, 일, 주, 월, 년, 10년, 세기, 밀레니엄또는 약어 또는 이 단위의 복수형;방향될 수 있습니다전또는 비어 있습니다. at 기호(@)는 선택적 노이즈입니다. 다양한 금액 단위는 암시적으로 적절한 부호로 합산됩니다. 회계.
일, 시간, 분, 초의 양은 다음과 같습니다. 명시적인 단위 표시 없이 지정됩니다. 예를 들어,'1 12:59:10'다음과 동일하게 읽혀집니다'1일 12시간 59분 10초'.
선택적 1초 미만 정밀도p0에서 6 사이여야 하며 기본값은 입력 리터럴의 정밀도입니다.
내부적으로간격값은 다음과 같습니다
월, 일, 초로 저장됩니다. 이는 다음과 같은 이유로 수행됩니다.
한 달의 일수는 다양하며 하루는 23일 또는 25일일 수 있습니다.
일광 절약 시간 조정이 포함된 경우 시간입니다.
간격은 일반적으로 상수 문자열로 생성되기 때문에
또는타임스탬프뺄셈, 이 저장공간
방법은 대부분의 경우에 잘 작동합니다. 기능justify_days그리고justify_hours조정 가능
정상적인 기간을 초과하는 요일과 시간.
포스트그레SQL지원 편의를 위한 몇 가지 특수 배트맨 토토/시간 입력 값 에 표시됨테이블 8-13. 값무한대그리고-무한대특별히 표시됩니다 시스템 내부에서도 같은 방식으로 표시됩니다. 하지만 다른 것들은 단순히 표기상의 약어입니다. 읽을 때 일반 배트맨 토토/시간 값으로 변환됩니다. (안에 특정한,지금및 관련 문자열 즉시 특정 시간 값으로 변환됩니다. 읽기.) 이 값은 모두 단일로 작성되어야 합니다. SQL 명령에서 상수로 사용될 때는 따옴표를 사용합니다.
표 8-13. 특수 배트맨 토토/시간 입력
| 입력 문자열 | 유효한 유형 | 설명 |
|---|---|---|
| 에포크 | 배트맨 토토, 타임스탬프 | 1970-01-01 00:00:00+00 (유닉스 시스템 시간 영) |
| 무한대 | 타임스탬프 | 다른 모든 타임스탬프보다 늦음 |
| -무한대 | 타임스탬프 | 다른 모든 타임스탬프보다 빠름 |
| 지금 | 배트맨 토토, 시간, 타임스탬프 | 현재 거래 시작 시간 |
| 오늘 | 배트맨 토토, 타임스탬프 | 오늘 자정 |
| 내일 | 배트맨 토토, 타임스탬프 | 내일 자정 |
| 어제 | 배트맨 토토, 타임스탬프 | 어제 자정 |
| 모든 공 | 시간 | 00:00:00.00 UTC |
다음SQL-호환 기능도 사용할 수 있습니다. 해당 데이터의 현재 시간 값을 얻으려면 유형:CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP, 현지시간, 현지타임스탬프. 후자 4개는 다음을 받아들인다. 선택적인 1초 미만의 정밀도 사양. (보다섹션 9.9.4.) 그러나 이는 SQL 함수이며 다음과 같습니다.아님다음으로 인식됨 데이터 입력 문자열입니다.
배트맨 토토/시간 유형의 출력 형식을 하나로 설정할 수 있습니다 네 가지 스타일 ISO 8601 중SQL(Ingres), 기존 POSTGRES 및 독일어, 명령 사용SET 배트맨 토토 스타일. 기본값은ISO형식. (그만큼SQL표준에는 ISO 사용이 필요합니다. 8601 형식입니다. 의 이름"SQL"출력 형식은 역사적 사고입니다.)테이블 8-14각 출력 스타일의 예를 보여줍니다. 의 출력배트맨 토토그리고시간유형 물론 배트맨 토토나 시간 부분만 해당됩니다. 주어진 예.
표 8-14. 배트맨 토토/시간 출력 스타일
| 스타일 사양 | 설명 | 예 |
|---|---|---|
| ISO | ISO 8601/SQL 표준 | 1997-12-17 07:37:16-08 |
| SQL | 전통적인 스타일 | 1997년 12월 17일 07:37:16.00 PST |
| 포스트그레스 | 원래 스타일 | 1997년 12월 17일 수요일 07:37:16 PST |
| 독일어 | 지역 스타일 | 1997년 12월 17일 07:37:16.00 PST |
그 안에서SQL및 POSTGRES 스타일, DMY 필드 순서가 지정된 경우 배트맨 토토가 월 앞에 나타납니다. 지정하지 않으면 월이 일 앞에 표시됩니다. (보다섹션 8.5.1이 설정이 해석에 어떤 영향을 미치는지에 대해 값을 입력합니다.)테이블 8-15예를 보여줍니다.
표 8-15. 배트맨 토토 순서 규칙
| 배트맨 토토 스타일설정 | 입력 순서 | 출력 예 |
|---|---|---|
| SQL, DMY | 일/월/년 | 1997년 17월 12일 15:37:16.00 CET |
| SQL, MDY | 월/일/년 | 1997년 12월 17일 07:37:16.00 PST |
| 포스트그레스, DMY | 일/월/년 | 1997년 12월 17일 수요일 07:37:16 PST |
간격출력은 입력과 같습니다. 형식(다음과 같은 단위 제외)세기또는주연도로 변환되며 일과전로 변환됩니다. 적절한 표시. ISO 모드에서 출력은 다음과 같습니다.
[ 수량 단위 [ ... ] ] [ 일 ] [ 시간:분:초 ]
배트맨 토토/시간 스타일은 다음을 사용하여 사용자가 선택할 수 있습니다.배트맨 토토 스타일 설정명령, 그배트맨 토토 스타일매개변수postgresql.conf구성 파일 또는PGDATESTYLE서버 또는 클라이언트의 환경 변수. 서식
기능to_char(참조섹션 9.8)도 사용 가능
배트맨 토토/시간 출력 형식을 지정하는 보다 유연한 방법입니다.
시간대와 시간대 규칙은 다음의 영향을 받습니다. 지구 기하학뿐만 아니라 정치적 결정도 가능합니다. 주변 시간대 1900년대에는 세계가 다소 표준화되었지만 특히 다음과 같은 경우 임의로 변경되는 경향이 계속됩니다. 일광 절약 시간제 규칙을 준수합니다.PostgreSQL현재 지원 1902년부터 2038년까지의 일광 절약 시간제 규칙 (기존 Unix 시스템의 전체 범위에 해당) 시간). 해당 범위를 벗어난 시간은 다음으로 간주됩니다."표준시"선택한 시간대에 대해서는 아니요 일년 중 어느 시기에 속하든 상관없습니다.
PostgreSQL노력합니다 와 호환 가능SQL일반적인 사용법에 대한 표준 정의. 그러나,SQL표준에 이상한 조합이 있습니다 배트맨 토토 및 시간 유형 및 기능. 두 가지 명백한 문제 이다:
비록배트맨 토토유형은 그렇지 않습니다. 연관된 시간대가 있습니다.시간캔을 입력하세요. 현실 세계의 시간대 배트맨 토토와 연관되지 않는 이상 의미가 거의 없습니다. 오프셋은 연중 내내 달라질 수 있으므로 일광 절약 시간제 경계.
기본 시간대는 상수 숫자로 지정됩니다. 오프셋UTC. 그것은 따라서 일광 절약 시간제에 적응할 수 없습니다. 배트맨 토토/시간 연산을 수행할 때DST경계.
이러한 문제를 해결하려면 배트맨 토토/시간을 사용하는 것이 좋습니다. 시간대를 사용할 때 배트맨 토토와 시간을 모두 포함하는 유형입니다. 우리 추천하다아님사용 중 유형시간대 포함 시간(하지만 에서 지원됩니다.포스트그레SQL용 레거시 애플리케이션 및 규정 준수를 위해SQL표준).PostgreSQL현지 시간대로 가정합니다. 배트맨 토토 또는 시간만 포함하는 모든 유형에 대해.
모든 시간대 인식 배트맨 토토와 시간은 내부적으로 저장됩니다.UTC. 그들은로 변환됩니다 에서 지정한 지역의 현지 시간시간대구성 매개변수가 표시되기 전에 고객.
그시간대구성 매개변수는 파일에서 설정될 수 있습니다postgresql.conf또는 기타 에 설명된 표준 방식17장. 또한 여러 가지가 있습니다 특별한 설정 방법:
만약시간대다음에 지정되지 않았습니다.postgresql.conf또한 postmaster 명령줄 스위치를 사용하면 서버가 다음을 사용하려고 합니다. 의 값TZ환경 변수를 기본 시간대로 설정합니다. 만약에TZ정의되지 않았거나 시간이 아닙니다. 알려진 영역 이름PostgreSQL, 서버는 다음을 시도합니다. 운영 체제의 기본 시간대를 결정합니다. C 라이브러리 함수의 동작 확인현지시간(). 기본 시간대는 다음과 같습니다. 중에서 가장 가까운 것으로 선택됨PostgreSQL의 알려진 시간대.
그SQL명령시간대 설정시간대를 설정합니다 세션을 위해. 이것은 다음의 대체 철자법입니다.다음으로 시간대 설정더 보기 SQL 사양 호환 구문.
그PGTZ환경 변수, if 클라이언트에 설정되어 다음에서 사용됩니다.libpq보내기 신청서시간대 설정명령을 연결 시 서버에 연결됩니다.
참조PostgreSQL : 문서 : 8.1 : 날짜/토토 결과 지원용 사용 가능한 시간대 목록입니다.
PostgreSQL줄리안을 사용합니다 모든 배트맨 토토/시간 계산에 대한 배트맨 토토입니다. 그들은 좋은 것을 가지고 있습니다 어떤 배트맨 토토라도 정확하게 예측/계산하는 속성 기원전 4713년보다 최근부터 먼 미래까지, 1년의 길이가 365.2425일이라고 가정합니다.
19세기 이전의 배트맨 토토 관례는 흥미로운 내용이지만 보증할 만큼 일관성이 없습니다. 배트맨 토토/시간 핸들러로 코딩합니다.