postgresql전체를 지원합니다 세트SQL날짜와 토토 베이 에 표시된 유형테이블 8-9.
표 8-9. 날짜/토토 베이 유형
이름 | 스토리지 크기 | 설명 | 낮은 값 | 높은 가치 | 해상도 |
---|---|---|---|---|---|
타임 스탬프 [(P)] [토토 베이대가없는 ] | 8 바이트 | 날짜와 토토 베이 모두 | 4713 BC | 5874897 AD | 1 마이크로 초 / 14 자리 |
타임 스탬프 [(P)] 토토 베이대와 함께 | 8 바이트 | 토토 베이대와 토토 베이 영역이있는 날짜와 토토 베이 모두 | 4713 BC | 5874897 AD | 1 마이크로 초 / 14 자리 |
간격 [(P)] | 12 바이트 | 토토 베이 간격 | -178000000 년 | 178000000 년 | 1 마이크로 초 |
날짜 | 4 바이트 | 날짜 만 | 4713 BC | 32767 AD | 1 일 |
토토 베이 [(P)] [토토 베이대가없는 ] | 8 바이트 | 토토 베이의 토토 베이 만 | 00:00:00.00 | 23:59:59.99 | 1 마이크로 초 |
토토 베이 [(P)] 토토 베이대와 함께 | 12 바이트 | 토토 베이대가있는 토토 베이의 토토 베이 만 | 00 : 00 : 00.00+12 | 23:59:59.99-12 | 1 마이크로 초 |
참고 :이전PostgreSQL7.3, 쓰기타임 스탬프토토 베이대가있는 타임 스탬프. 이것은 변경되었습니다 SQL 준수.
Time, 타임 스탬프, 그리고간격선택적 정밀도를 수락하십시오 값P초 분야에서 유지되는 분수 숫자 수. 에 의해 기본값은 정밀도에 명시적인 바인딩이 없습니다. 허용 범위P|타임 스탬프and간격Types.
참고 :언제타임 스탬프값 이중 정밀 부동 소수점 번호로 저장됩니다 (현재 기본값), 유효 정밀 한도는 5 월입니다 6 세 미만타임 스탬프값은입니다 2000-01-01 자정 전후에 몇 초로 저장됩니다. 마이크로 초 정밀도는 몇 안에 날짜에 대해 달성됩니다 2000-01-01 년이지만 정밀한 날짜가 저하됩니다 더 멀리. 언제타임 스탬프값은입니다 8 바이트 정수 (컴파일 타임 옵션)로 저장, 마이크로 초 정밀도는 전체 범위에서 사용할 수 있습니다 값. 그러나 8 바이트 정수 타임 스탬프가 더 많이 있습니다 위에 표시된 것보다 제한된 날짜 범위 : BC에서 4713에서 294276 AD.
용Time유형, 허용 범위P는 8 바이트 일 때 0에서 6입니다 정수 스토리지가 사용되거나 떠 다니는 경우 0에서 10까지 스토리지가 사용됩니다.
유형토토 베이대가있는 토토 베이정의되어 있습니다 SQL 표준에 의해, 그러나 정의는 속성을 보여줍니다. 의심스러운 유용성으로 이어집니다. 대부분의 경우의 조합날짜, Time, 토토 베이대가없는 타임 스탬프및토토 베이대가있는 타임 스탬프완전한 것을 제공해야합니다 모든 애플리케이션에 필요한 범위/토토 베이 기능.
유형AbstimeandReltime사용되는 정밀 유형이 낮습니다 내부. 새로운 유형에서 이러한 유형을 사용하지 않아도됩니다 신청서 및 기존의 신청은 언제 적절한. 이러한 내부 유형 중 일부 또는 전부는 사라질 수 있습니다 향후 릴리스에서.
날짜 및 토토 베이 입력은 거의 모든 합리적으로 허용됩니다. ISO 8601을 포함한 형식,SQL-컴파일 가능, 전통Postgres및 기타. 일부 형식의 경우 월, 일 및 날짜 입력의 연도 주문은 모호하며 이들의 예상 순서를 지정하는 지원이 있습니다. 전지. 설정Datestyle매개 변수 tomdy매월 선택하려면 해석,dmy선택합니다 주간 해석 또는YMD연말 해석을 선택하려면
PostgreSQL더 유연합니다 처리 날짜/토토 베이 입력에서SQL표준 요구 사항. 보다부록 B정확한 구문 분석 날짜/토토 베이 입력 규칙 및 인식 된 텍스트 필드 달, 요일 및 토토 베이대를 포함하여.
날짜 또는 토토 베이 문자 그대로 입력이 필요하다는 것을 기억하십시오. 텍스트 문자열과 같은 단일 따옴표로 둘러싸여 있습니다. 참조섹션 4.1.2.4자세한 내용은SQL다음 구문이 필요합니다
타입[(P)] ''value'
여기서P선택 사항 정밀 사양은 그에 해당하는 정수입니다 초 분야의 분수 숫자 수. 정밀도 에 대해 지정Time, 타임 스탬프및간격유형. 허용 값은 위에서 언급되어 있습니다. 정밀도가 없다면 일정한 사양으로 지정되며 기본값은 문자 적 가치의 정밀도.
테이블 8-10에 대한 가능한 입력을 보여줍니다날짜타입.
표 8-10. 날짜 입력
example | 설명 |
---|---|
1999 년 1 월 8 일 | 19488_19499입력 모드 |
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 일 indmy모드; 2001 년 2 월 3 일 inYMD모드 |
1999-Jan-08 | 1 월 8 일 모든 모드 |
1 월 -08-1999 | 1 월 8 일 모든 모드 |
08-Jan-1999 | 1 월 8 일 모든 모드 |
99-Jan-08 | 1 월 8 일YMD모드, else error |
08-Jan-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 | Julian Day |
BC 99 년 1 월 8 일 | 99 년 공동 시대 전 |
토토 베이 유형은입니다.토토 베이 [ (P)] 토토 베이대없이and토토 베이 [(P)] 토토 베이대와 함께. 그냥 쓰기Time와 동일합니다토토 베이대가없는 토토 베이.
이러한 유형에 대한 유효한 입력은 하루의 토토 베이으로 구성됩니다. 선택적 토토 베이대가 이어집니다. (보다테이블 8-11and테이블 8-12.) 입력에 토토 베이대가 지정된 경우토토 베이대가없는 토토 베이, 그것은 조용합니다 무시.
표 8-11. 토토 베이 입력
example | 설명 |
---|---|
04:05:06.789 | ISO 8601 |
04:05:06 | ISO 8601 |
04:05 | ISO 8601 |
040506 | ISO 8601 |
04 : 05 AM | 04:05와 동일; AM은 가치에 영향을 미치지 않습니다 |
04 : 05 PM | 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 | 이름별로 지정된 토토 베이대 |
타임 스탬프 유형에 대한 유효한 입력은 날짜와 토토 베이의 연결, 선택 사항이 뒤 따릅니다.ad또는BC, 선택적 토토 베이대가 이어집니다. 따라서
1999-01-08 04:05:06
and
1999-01-08 04:05:06 -8:00
유효한 값이며ISO8601 표준. 또한 광범위한 형식
1 월 8 일 04:05:06 1999 PST
지원됩니다.
for타임 스탬프 [토토 베이대가없는], 입력에 지정된 명시 적 토토 베이대는 조용히 무시했습니다. 즉, 결과 날짜/토토 베이 값이 도출됩니다 입력 값의 명시적인 날짜/토토 베이 필드에서 토토 베이대에 맞게 조정되지 않았습니다.
for토토 베이대가있는 타임 스탬프, 내부적으로 저장된 값은 항상 UTC에 있습니다 (Universal 전통적으로 그리니치 Lear Time으로 알려진 조정 된 토토 베이,GMT). 입력 값 명시적인 토토 베이대가 지정된 상태에서 UTC로 변환됩니다. 해당 토토 베이대에 적절한 오프셋. 토토 베이대가없는 경우 입력 문자열에 언급 된 다음 시스템에 의해 표시된 토토 베이대TimeZone매개 변수이며 UTC로 변환됩니다 에 오프셋 사용TimeZoneZone.
a토토 베이대가있는 타임 스탬프값은 출력입니다. 항상 UTC에서 현재의TIMEZONE구역 및 표시 그 지역의 현지 토토 베이으로. 다른 토토 베이에 토토 베이을보기 위해 Zone, 어느 중 하나 변경TimeZone또는 사용 그만큼토토 베이대에서구성 (참조섹션 9.8.3).
타임 스탬프없이 토토 베이대and토토 베이이 지남에 따라 타임 스탬프 존일반적으로타임 스탬프 토토 베이대없이값을 가져 가거나 |TimeZone현지 토토 베이. 다른 구역 참조는를 사용하여 변환에 대해 지정할 수 있습니다토토 베이대에서.
간격값은 함께 작성할 수 있습니다 다음 구문 :
[@]수량 Unit[수량 Unit...] [방향]
어디서 :수량is 번호 (서명 가능);UnitisSecond, Minute, Hour, 29799_29804, Week, Month, 년, 10 년, Century, 밀레니엄, 또는이 단위의 약어 또는 복수;방향can beAGO또는 비어 있습니다. AT 부호 (@)는 선택적 노이즈입니다. 다른 양 유닛은 적절한 부호로 암시 적으로 추가됩니다 회계.
일, 토토 베이, 몇 분 및 초의 양이 될 수 있습니다 명시적인 단위 표시없이 지정됩니다. 예를 들어,'1 12:59:10''1 일 12 토토 베이 59 분 10 초'.
선택적 정밀도P0과 6 사이 여야하며 기본값은 입력 문자.
다음SQL-컴파일 가능한 함수는 다음과 같이 사용할 수 있습니다 해당 데이터 유형의 날짜 또는 토토 베이 값 :current_date, current_time, current_timestamp, LocalTime, LocalTimestamp. 후자 4 명은 선택적 정밀 사양. (참조섹션 9.8.4.)
PostgreSQL또한 지원됩니다 편의를위한 몇 가지 특별 날짜/토토 베이 입력 값 표시테이블 8-13. 값Infinityand-infinity특별히 대표됩니다 시스템 내부에 동일한 방식으로 표시됩니다. 그러나 다른 사람들은 단순히 표현할 수있는 속기입니다 읽을 때 일반 날짜/토토 베이 값으로 변환됩니다. 모두 이 값은 정상 상수로 취급되며 단일 따옴표로 작성.
표 8-13. 특별 날짜/토토 베이 입력
입력 문자열 | 유효한 유형 | 설명 |
---|---|---|
epoch | 날짜, 타임 스탬프 | 1970-01-01 00 : 00 : 00+00 (UNIX 시스템 토토 베이 영) |
Infinity | 타임 스탬프 | 다른 모든 타임 스탬프보다 늦게 |
-infinity | 타임 스탬프 | 다른 모든 타임 스탬프보다 일찍 |
지금 | 날짜, Time, 타임 스탬프 | 현재 트랜잭션의 시작 토토 베이 |
오늘 | 날짜, 타임 스탬프 | 오늘 자정 |
내일 | 날짜, 타임 스탬프 | 내일 자정 |
어제 | 날짜, 타임 스탬프 | 어제 자정 |
Allballs | Time | 00 : 00 : 00.00 UTC |
날짜/토토 베이 유형의 출력 형식은 하나로 설정할 수 있습니다. 네 가지 스타일 중 ISO 8601,SQL(Ingres), 전통적인 우편둥이 및 독일어, 명령 사용세트 Datestyle. 기본값은입니다.ISO형식. (그만큼SQL표준은 ISO를 사용해야합니다 8601 형식. 의 이름"SQL"출력 형식은 역사적 사고입니다.)테이블 8-14각 출력 스타일의 예를 보여줍니다. 의 출력날짜andTime유형 물론 날짜 또는 토토 베이 부분에 따라 주어진 예.
표 8-14. 날짜/토토 베이 출력 스타일
스타일 사양 | 설명 | example |
---|---|---|
ISO | ISO 8601/SQL 표준 | 1997-12-17 07:37:16-08 |
SQL | 전통적인 스타일 | 12/17/1997 07 : 37 : 16.00 PST |
Postgres | 원본 스타일 | wed 12 월 17 일 07:37:16 1997 PST |
독일어 | 지역 스타일 | 17.12.1997 07 : 37 : 16.00 PST |
inSQL및 Postgres 스타일, DMY 필드 주문이 있었다면 월 전 날 나타납니다. 지정, 그렇지 않으면 월이 하루 전에 나타납니다. (보다섹션 8.5.1이 설정이 해석에 어떤 영향을 미치는지 입력 값.)테이블 8-15예를 보여줍니다.
표 8-15. 날짜 명령 규칙
Datestyle설정 | 입력 순서 | 출력 예 |
---|---|---|
SQL, dmy | day/Month/년 | 17/12/1997 15 : 37 : 16.00 CET |
SQL, MDY | Month/day/Year | 12/17/1997 07 : 37 : 16.00 PST |
Postgres, dmy | day/Month/Year | wed 17 Dec 07:37:16 1997 PST |
간격출력은 입력처럼 보입니다 와 같은 단위를 제외하고 형식Century또는Wek는 몇 년과 며칠로 변환됩니다 그리고 그Ago적절한 표시. ISO 모드에서 출력은
[ 수량 Unit[ ... ]] [ days ] [ 토토 베이:mings:Sekunden ]
날짜/토토 베이 스타일은 사용자가 선택할 수 있습니다.데이터 스타일 설정명령,Datestyle매개 변수postgresql.conf구성 파일 또는pgdatestyle환경 변수에서
서버 또는 클라이언트. 서식 함수to_char
(참조섹션 9.7)도 사용할 수 있습니다
날짜/토토 베이 출력을 포맷하는보다 유연한 방법으로.
토토 베이대 및 토토 베이대 규칙은 영향을받습니다 지구 기하학뿐만 아니라 정치적 결정. 주변의 토토 베이대 세계는 1900 년대에 다소 표준화되었다 계속해서 임의의 변화가 발생하기 쉽습니다.PostgreSQL운영 체제를 사용합니다 출력 토토 베이대 지원을 제공하는 기본 기능 및 이 시스템에는 일반적으로 정보가 포함되어 있습니다 1902 년부터 2038 년까지 (전체 범위에 해당 기존의 유닉스 시스템 토토 베이).타임 스탬프와 함께 토토 베이대및토토 베이대가있는 토토 베이해당 연도에만 토토 베이대 정보를 사용합니다. 그 범위 외부의 토토 베이이UTC. 그러나 토토 베이대 지원이 도출되기 때문에 기본 운영 체제 토토 베이대 기능에서 일광 절약 토토 베이 및 기타 특별한 행동을 처리 할 수 있습니다.
PostgreSQL와 호환SQL일반적인 사용에 대한 표준 정의. 그러나SQL표준에는 홀수 믹스가 있습니다 날짜 및 토토 베이 유형 및 기능. 두 가지 명백한 문제 이다:
날짜타입은 그렇지 않습니다 관련 토토 베이대가 있습니다.Time타입 캔. 현실 세계의 토토 베이대는 할 수 있습니다 날짜와 관련이없는 한 의미가 없습니다. 오프셋 이후 토토 베이이 일년 내내 다를 수있는 토토 베이 일광 절약 토토 베이 경계.
기본 토토 베이대는 상수 숫자로 지정됩니다. 에서 상쇄UTC. 그것은 할 때 일광 절약 토토 베이에 적응할 수 없습니다 날짜/토토 베이 산술 전체dst경계.
이러한 어려움을 해결하려면 날짜/토토 베이을 사용하는 것이 좋습니다 토토 베이대를 사용할 때 날짜와 토토 베이을 모두 포함하는 유형. 우리 추천하다아님사용 유형토토 베이대가있는 토토 베이(하지만 지원됩니다PostgreSQL레거시 응용 프로그램 및 기타와의 호환성SQL구현).PostgreSQL현지인을 가정합니다 날짜 또는 토토 베이 만 포함 된 모든 유형의 토토 베이대
모든 날짜와 토토 베이은 내부적으로 저장됩니다UTC. 토토 베이은 현지 토토 베이으로 전환됩니다 클라이언트로 전송되기 전에 데이터베이스 서버가 기본값은 서버 토토 베이대에 있습니다.
섬기는 사람:
theTZ환경 변수 켜짐 서버 호스트는 서버에서 기본 토토 베이으로 사용됩니다. 다른 사람이 지정되지 않은 경우.
the타임 존구성 파일에서 매개 변수를 설정할 수 있습니다postgresql.conf.
thePGTZ환경 변수, if 클라이언트에서 설정하고 사용합니다.libpqa 보낼 응용 프로그램토토 베이대 설정연결시 서버.
theSQL명령토토 베이대 설정토토 베이대를 설정합니다 세션을 위해.
참고 :잘못된 토토 베이대가 지정된 경우 토토 베이대가됩니다UTC(어쨌든 대부분의 시스템에서).
참조부록 B사용 가능한 토토 베이대 목록.
PostgreSQLJulian을 사용합니다 모든 날짜/토토 베이 계산 날짜. 그들은 좋은 것을 가지고 있습니다 날짜를 올바르게 예측/계산하는 속성 기원전 4713 년 이상, 연도의 길이는 365.2425 일이라고 가정합니다.
19 세기 이전의 날짜 규칙 흥미로운 독서이지만 보증하기에 충분히 일관되지 않습니다 날짜/토토 베이 핸들러로 코딩.