PostgreSQL전체 세트 지원SQL날짜 및 사설 토토 유형, 다음에 표시됨표 8.9. The operations available on these data types are described inPostgreSQL : 문서 : 17 : 9.9. 날짜/와이즈 토토 기능 및 운영자. 날짜는 그레고리력이 도입되기 몇 년 전이라도 그레고리력에 따라 계산됩니다(참조PostgreSQL : 문서 : 17 : B.6. 단위의 토토 사이트 추천자세한 내용은).
표 8.9. 날짜/사설 토토 유형
| 이름 | 저장소 크기 | 설명 | 낮은 가치 | 높은 가치 | 해결 |
|---|---|---|---|---|---|
타임스탬프 [ ( |
8바이트 | 날짜 및 사설 토토 모두(사설 토토대 없음) | 기원전 4713년 | 서기 294276년 | 1마이크로초 |
타임스탬프 [ ( |
8바이트 | 날짜 및 사설 토토 모두, 사설 토토대 포함 | 기원전 4713년 | 서기 294276년 | 1마이크로초 |
날짜 |
4바이트 | 날짜(사설 토토 없음) | 기원전 4713년 | 5874897 서기 | 1일 |
사설 토토 [ ( |
8바이트 | 사설 토토(날짜 없음) | 00:00:00 | 24:00:00 | 1마이크로초 |
사설 토토 [ ( |
12바이트 | 사설 토토(날짜 없음), 사설 토토대 포함 | 00:00:00+1559 | 24:00:00-1559 | 1마이크로초 |
간격 [ |
16바이트 | 사설 토토 간격 | -178000000년 | 178000000년 | 1마이크로초 |
SQL 표준에서는 다음과 같이 작성해야 합니다.타임스탬프다음과 동등함사설 토토대 없는 타임스탬프및PostgreSQL그 행동을 존중합니다.timestamptz다음의 약어로 허용됩니다.사설 토토대가 포함된 타임스탬프; 이것은PostgreSQL확장.
사설 토토, 타임스탬프및간격선택적 정밀도 값 허용p초 필드에 유지되는 소수 자릿수를 지정합니다. 기본적으로 정밀도에는 명시적인 제한이 없습니다. 허용되는 범위는p0부터 6까지입니다.
그간격type에는 다음 문구 중 하나를 작성하여 저장된 필드 집합을 제한하는 추가 옵션이 있습니다.
연도 월 낮 사설 토토 분 두번째 매년 매일매일 하루에서 분까지 매일매일 사설 토토에서 분까지 사설 토토에서 초로 분에서 초까지
둘 다인 경우에 주의하세요필드그리고p지정되었습니다.필드반드시 포함두 번째, since the precision applies only to the seconds.
유형사설 토토대 포함 사설 토토은(는) SQL 표준에 의해 정의되지만 이 정의는 유용성이 의심스러운 속성을 나타냅니다. 대부분의 경우 다음의 조합은날짜, 사설 토토, 사설 토토대가 없는 타임스탬프및사설 토토대가 포함된 타임스탬프모든 애플리케이션에 필요한 전체 날짜/사설 토토 기능을 제공해야 합니다.
날짜 및 사설 토토 입력은 ISO 8601을 포함한 거의 모든 합리적인 형식으로 허용됩니다.SQL-호환, 전통포스트그레스및 기타. 일부 형식의 경우 일, 월, 연도 날짜 입력 순서가 모호하며 이러한 필드의 예상 순서를 지정하는 기능이 지원됩니다. 설정날짜 스타일매개변수 ~MDY월-일-년 해석을 선택하려면,DMY일-월-년 해석을 선택하거나YMD년-월-일 해석을 선택합니다.
PostgreSQL은보다 날짜/사설 토토 입력 처리가 더 유연합니다.SQL표준이 필요합니다. 보다부록 B날짜/사설 토토 입력의 정확한 구문 분석 규칙과 월, 요일 및 사설 토토대를 포함한 인식된 텍스트 필드에 대한 정보입니다.
날짜 또는 사설 토토 리터럴 입력은 텍스트 문자열과 같이 작은따옴표로 묶어야 한다는 점을 기억하십시오. 참조섹션 4.1.2.7더 많은 정보를 원하시면.SQL다음 구문이 필요합니다
유형[ (p) ] '값'
어디에서p은 초 필드의 소수 자릿수를 제공하는 선택적 정밀도 사양입니다. 정밀도는 다음과 같이 지정할 수 있습니다.사설 토토, 타임스탬프및간격유형이며 범위는 0에서 6까지입니다. 상수 사양에 정밀도가 지정되지 않은 경우 기본값은 리터럴 값의 정밀도입니다(6자리 이하).
표 8.10다음에 대한 몇 가지 가능한 입력을 표시합니다.날짜유형.
표 8.10. 날짜 입력
| 예 | 설명 |
|---|---|
| 1999-01-08 | ISO 8601; 1월 8일 모든 모드(권장 형식) |
| 1999년 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모드, else 오류 |
| 1999년 1월 8일 | 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.) 사설 토토대가 입력에 지정된 경우사설 토토대가 없는 사설 토토, 자동으로 무시됩니다. 날짜를 지정할 수도 있지만 일광 절약 사설 토토제 규칙과 관련된 사설 토토대 이름을 사용하는 경우를 제외하고는 무시됩니다.미국/New_York. 이 경우 표준 사설 토토 또는 일광 절약 사설 토토 적용 여부를 결정하려면 날짜를 지정해야 합니다. 적절한 사설 토토대 오프셋은에 기록됩니다.사설 토토대 포함 사설 토토값이며 저장된 대로 출력됩니다. 활성 사설 토토대에 맞춰 조정되지 않았습니다.
표 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, 사설 토토대가 UTC 오프셋임 |
04:05:06-08:00 |
ISO 8601, 사설 토토대가 UTC 오프셋임 |
04:05-08:00 |
ISO 8601, 사설 토토대가 UTC 오프셋임 |
040506-08 |
ISO 8601, 사설 토토대가 UTC 오프셋임 |
040506+0730 |
ISO 8601, with fractional-hour time zone as UTC offset |
040506+07:30:00 |
초 단위로 지정된 UTC 오프셋(ISO 8601에서는 허용되지 않음) |
04:05:06 PST |
time zone specified by abbreviation |
2003-04-12 04:05:06 America/New_York |
성명으로 지정된 사설 토토대 |
표 8.12. 사설 토토대 입력
| 예 | 설명 |
|---|---|
PST |
약어(태평양 표준시) |
미국/New_York |
전체 사설 토토대 이름 |
PST8PDT |
POSIX 스타일 사설 토토대 지정 |
-8:00:00 |
PST에 대한 UTC 오프셋 |
-8:00 |
PST용 UTC 오프셋(ISO 8601 확장 형식) |
-800 |
PST용 UTC 오프셋(ISO 8601 기본 형식) |
-8 |
PST용 UTC 오프셋(ISO 8601 기본 형식) |
줄루 |
UTC의 군사 약어 |
z |
약식줄루(ISO 8601에도 포함) |
참조섹션 8.5.3사설 토토대 지정 방법에 대한 자세한 내용은.
타임스탬프 유형에 대한 유효한 입력은 날짜와 사설 토토의 연결, 그 뒤에 선택적인 사설 토토대, 그 뒤에 선택사항으로 구성됩니다.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(세계협정시) 해당 사설 토토대에 적합한 오프셋을 사용합니다. 입력 문자열에 사설 토토대가 명시되어 있지 않으면 시스템의 사설 토토대에 지정된 것으로 간주됩니다.사설 토토대매개변수이며,에 대한 오프셋을 사용하여 UTC로 변환됩니다.사설 토토대구역. 두 경우 모두 값은 내부적으로 UTC로 저장되며 원래 명시되었거나 가정된 사설 토토대는 유지되지 않습니다.
언제사설 토토대가 포함된 타임스탬프값이 출력되며 항상 UTC에서 현재로 변환됩니다.사설 토토대존이며 해당 존의 현지 사설 토토으로 표시됩니다. 다른 사설 토토대의 사설 토토을 보려면 다음 중 하나를 변경하세요.사설 토토대또는 다음을 사용하세요사설 토토대구조물 (참조섹션 9.9.4).
전환 사이사설 토토대 없는 타임스탬프그리고사설 토토대가 포함된 타임스탬프일반적으로 다음과 같이 가정합니다.사설 토토대 없는 타임스탬프값은 다음과 같이 취하거나 주어져야 합니다.사설 토토대현지 사설 토토. 다음을 사용하여 변환을 위해 다른 사설 토토대를 지정할 수 있습니다.사설 토토대.
PostgreSQL다음과 같이 편의를 위해 여러 가지 특수 날짜/사설 토토 입력 값을 지원합니다.표 8.13. 값무한대그리고-무한대특별히 시스템 내부에 표시되며 변경되지 않고 표시됩니다. 그러나 다른 것들은 읽을 때 일반적인 날짜/사설 토토 값으로 변환되는 단순한 표기법 약어입니다. (특히,지금및 관련 문자열은 읽는 즉시 특정 사설 토토 값으로 변환됩니다.) 이러한 값은 모두 SQL 명령에서 상수로 사용될 때 작은따옴표로 묶어야 합니다.
표 8.13. 특수 날짜/사설 토토 입력
| 입력 문자열 | 유효한 유형 | 설명 |
|---|---|---|
에포크 |
날짜, 타임스탬프 |
1970-01-01 00:00:00+00 (Unix 시스템 사설 토토 0) |
무한대 |
날짜, 타임스탬프, 간격 |
다른 모든 타임스탬프보다 늦음 |
-무한대 |
날짜, 타임스탬프, 간격 |
다른 모든 타임스탬프보다 빠름 |
지금 |
날짜, 사설 토토, 타임스탬프 |
현재 거래 시작 사설 토토 |
오늘 |
날짜, 타임스탬프 |
자정(00:00) 오늘 |
내일 |
날짜, 타임스탬프 |
자정(00:00) 내일 |
어제 |
날짜, 타임스탬프 |
자정(00:00) 어제 |
모든 공 |
사설 토토 |
00:00:00.00 UTC |
다음SQL-호환 함수를 사용하여 해당 데이터 유형에 대한 현재 사설 토토 값을 얻을 수도 있습니다.CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP, 현지 사설 토토, LOCALTIMESTAMP. (보다섹션 9.9.5.) 이는 SQL 함수이며 다음과 같습니다.아님데이터 입력 문자열에서 인식됩니다.
입력 문자열 동안지금, 오늘, 내일및어제대화형 SQL 명령에 사용하기에 적합하지만 나중에 실행하기 위해 명령을 저장할 때(예: 준비된 명령문, 뷰 및 함수 정의에서) 놀라운 동작이 발생할 수 있습니다. The string can be converted to a specific time value that continues to be used long after it becomes stale. Use one of the SQL functions instead in such contexts. 예를 들어,CURRENT_DATE + 1보다 안전합니다'내일'::날짜.
날짜/사설 토토 유형의 출력 형식은 ISO 8601 네 가지 스타일 중 하나로 설정될 수 있습니다.SQL(I사설 토토res), 전통포스트그레스(유닉스날짜형식) 또는 독일어. 기본값은ISO형식. (그만큼SQL표준에서는 ISO 8601 형식을 사용해야 합니다. 의 이름“SQL”출력 형식은 역사적 사고입니다.)표 8.14각 출력 스타일의 예를 보여줍니다. 의 출력날짜그리고사설 토토유형은 일반적으로 주어진 예에 따른 날짜 또는 사설 토토 부분입니다. 그러나,포스트그레스style은 날짜 전용 값을 출력합니다.ISO형식.
표 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 |
ISO 8601은 대문자 사용을 규정합니다.T날짜와 사설 토토을 구분합니다.포스트그레SQL입력에서는 해당 형식을 허용하지만 출력에서는 공백을 사용합니다.T, 위에 표시된 대로입니다. 이는 가독성과 일관성을 위한 것입니다.RFC 3339다른 데이터베이스 시스템도 마찬가지입니다.
에서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스타일, 사설 토토대는 항상 UTC로부터의 부호 있는 숫자 오프셋으로 표시되며 그리니치 동쪽 지역에는 양수 부호가 사용됩니다. 오프셋은 다음과 같이 표시됩니다.ㅎ(사설 토토만) 사설 토토의 정수인 경우, 그렇지 않으면ㅎ:mm분의 정수인 경우, 그렇지 않은 경우ㅎ:mm:ss. (세 번째 경우는 현대 사설 토토대 표준에서는 가능하지 않지만 표준화된 사설 토토대 채택 이전의 타임스탬프로 작업할 때 나타날 수 있습니다.) 다른 날짜 스타일에서는 사설 토토대가 현재 사설 토토대에서 일반적으로 사용되는 경우 사설 토토대가 알파벳 약어로 표시됩니다. 그렇지 않으면 ISO 8601 기본 형식의 부호 있는 숫자 오프셋으로 표시됩니다(ㅎ또는흠).
날짜/사설 토토 스타일은 다음을 사용하여 사용자가 선택할 수 있습니다.날짜 스타일 설정명령, 그날짜 스타일매개변수postgresql.conf구성 파일 또는PGDATESTYLE서버 또는 클라이언트의 환경 변수.
포맷 기능to_char(참조PostgreSQL : 문서 : 17 : 9.8. 데이터 유형 토토 사이트 토토 사이트 기능)는 날짜/사설 토토 출력 형식을 지정하는 보다 유연한 방법으로도 사용할 수 있습니다.
사설 토토대와 사설 토토대 규칙은 지구 기하학뿐만 아니라 정치적 결정의 영향을 받습니다. 전 세계의 사설 토토대는 1900년대에 어느 정도 표준화되었지만 특히 일광 절약 사설 토토제 규칙과 관련하여 임의적인 변경이 계속 발생하는 경향이 있습니다.PostgreSQL은 과거 사설 토토대 규칙에 대한 정보를 얻기 위해 널리 사용되는 IANA(Olson) 사설 토토대 데이터베이스를 사용합니다. 미래에는 특정 사설 토토대에 대해 알려진 최신 규칙이 먼 미래에도 무기한으로 계속 관찰될 것이라고 가정합니다.
PostgreSQL다음과 호환되도록 노력합니다SQL일반적인 사용법에 대한 표준 정의. 그러나,SQL표준에는 날짜 및 사설 토토 유형과 기능이 이상하게 혼합되어 있습니다. 두 가지 명백한 문제는 다음과 같습니다.
비록날짜유형은 연관된 사설 토토대를 가질 수 없습니다.사설 토토캔을 입력하세요. 실제 세계의 사설 토토대는 날짜 및 사설 토토과 연결되지 않는 한 거의 의미가 없습니다. 오프셋은 일광 절약 사설 토토 경계에 따라 일년 내내 달라질 수 있기 때문입니다.
기본 사설 토토대는 다음의 상수 숫자 오프셋으로 지정됩니다.UTC. 따라서 날짜/사설 토토 산술을 수행할 때 일광 절약 사설 토토제에 적응하는 것은 불가능합니다.DST경계.
이러한 문제를 해결하려면 사설 토토대를 사용할 때 날짜와 사설 토토을 모두 포함하는 날짜/사설 토토 유형을 사용하는 것이 좋습니다. 우리는 그렇습니다아님다음 유형을 사용하는 것이 좋습니다사설 토토대 포함 사설 토토(비록 다음에서 지원되지만포스트그레SQL레거시 애플리케이션 및 규정 준수를 위해SQL표준).PostgreSQL날짜 또는 사설 토토만 포함하는 모든 유형에 대해 현지 사설 토토대를 가정합니다.
모든 사설 토토대 인식 날짜와 사설 토토은 내부적으로 저장됩니다.UTC. 에서 지정한 사설 토토대의 현지 사설 토토으로 변환됩니다.사설 토토대클라이언트에 표시되기 전의 구성 매개변수입니다.
PostgreSQL세 가지 다른 형식으로 사설 토토대를 지정할 수 있습니다.
전체 사설 토토대 이름, 예미국/New_York. 인식된 사설 토토대 이름은 다음 목록에 나열되어 있습니다.pg_timezone_names보기(참조메이저 토토 사이트 : 문서 : 17 : 52.32. pg_timezone_names). 포스트그레SQLuses the widely-used IANA time zone data for this purpose, so the same time zone names are also recognized by other software.
예를 들어 사설 토토대 약어PST. 이러한 사양은 일광 절약 사설 토토 전환 규칙 집합을 암시할 수 있는 전체 사설 토토대 이름과 달리 UTC로부터의 특정 오프셋만 정의합니다. 인식된 약어는에 나열되어 있습니다.pg_timezone_abbrevs보기(참조스포츠 토토 베트맨 : 문서 : 17 : 52.31. pg_timezone_abbrevs). 구성 매개변수를 설정할 수 없습니다.사설 토토대또는log_timezoneto a time zone abbreviation, but you can use abbreviations in date/time input values and with the사설 토토대에연산자.
사설 토토대 이름 및 약어 외에도포스트그레SQL에 설명된 대로 POSIX 스타일 사설 토토대 사양을 허용합니다.PostgreSQL : 문서 : 17 : B.5. posix 범퍼카 토토 사양. 이 옵션은 일반적으로 명명된 사설 토토대를 사용하는 것보다 바람직하지 않지만 적절한 IANA 사설 토토대 항목을 사용할 수 없는 경우 필요할 수 있습니다.
간단히 말하면, 이는 약어와 전체 이름의 차이입니다. 약어는 UTC로부터의 특정 오프셋을 나타내는 반면, 많은 전체 이름은 현지 일광 절약 사설 토토 규칙을 암시하므로 두 가지 가능한 UTC 오프셋이 있습니다. 예를 들어,2014-06-04 12:00 America/New_York은 뉴욕의 현지 사설 토토 정오를 나타내며, 이 특정 날짜는 동부 일광 절약 사설 토토(UTC-4)이었습니다. 그래서2014-06-04 12:00 EDT동일한 순간을 지정합니다. 하지만2014-06-04 12:00 EST해당 날짜에 일광 절약 사설 토토제가 명목상 적용되었는지 여부에 관계없이 정오 동부 표준시(UTC-5)를 지정합니다.
문제를 복잡하게 만들기 위해 일부 관할권에서는 동일한 사설 토토대 약어를 사용하여 서로 다른 사설 토토에 서로 다른 UTC 오프셋을 의미합니다. 예를 들어 모스크바에서MSK어떤 해에는 UTC+3을 의미했고 다른 해에는 UTC+4를 의미했습니다.포스트그레SQL지정된 날짜에 의미한(또는 가장 최근에 의미했던) 내용에 따라 이러한 약어를 해석합니다. 하지만, 와 마찬가지로EST위의 예에서는 해당 날짜의 현지 상용시와 반드시 동일하지는 않습니다.
모든 경우에 사설 토토대 이름과 약어는 대소문자를 구분하지 않고 인식됩니다. (이것은 다음과 같은 변경사항입니다.PostgreSQLversions prior to 8.2, which were case-sensitive in some contexts but not others.)
사설 토토대 이름이나 약어 모두 서버에 내장되어 있지 않습니다. 아래에 저장된 구성 파일에서 가져옵니다..../공유/사설 토토대/그리고.../share/timezonesets/설치 디렉토리(참조PostgreSQL : 문서 : 17 : B.4. 날짜/시간 구성 토토 꽁 머니).
그사설 토토대구성 매개변수는 파일에서 설정할 수 있습니다.postgresql.conf또는에 설명된 다른 표준 방식 중 하나를 사용합니다.윈 토토 : 문서 : 17 : 19 장 서버 구성. 이를 설정하는 몇 가지 특별한 방법도 있습니다.
그SQL명령사설 토토대 설정세션의 사설 토토대를 설정합니다. 이것은 다음의 대체 철자법입니다.다음으로 사설 토토대 설정SQL 사양과 더 호환되는 구문을 사용합니다.
그PGTZ환경 변수는 다음에 의해 사용됩니다libpq클라이언트가 보내는 것사설 토토대 설정연결 시 서버에 명령을 내립니다.
간격값은 다음 자세한 구문을 사용하여 작성할 수 있습니다:
[@]수량단위[수량단위...] [방향]
어디에서수량숫자입니다(부호가 있을 수 있음).단위is마이크로초, 밀리초, 초, 분, 사설 토토, 일, 주, 월, 년, 10년, 세기, 밀레니엄또는 이러한 단위의 약어 또는 복수형;방향될 수 있습니다전또는 비어 있습니다. at 기호(@)는 선택적 노이즈입니다. 다양한 단위의 양은 적절한 기호 계산을 통해 암시적으로 추가됩니다.전모든 필드를 무효화합니다. 이 구문은 다음과 같은 경우 간격 출력에도 사용됩니다.간격 스타일다음으로 설정됨postgres_verbose.
일, 사설 토토, 분, 초의 양은 명시적인 단위 표시 없이 지정할 수 있습니다. 예를 들어,'1 12:59:10'다음과 동일하게 읽혀집니다.'1일 12사설 토토 59분 10초'. 또한 대시를 사용하여 연도와 월의 조합을 지정할 수 있습니다. 예를 들어'200-10'다음과 동일하게 읽혀집니다'200년 10개월'. (이 짧은 형식은 실제로 허용되는 유일한 형식입니다.SQL표준이며 다음과 같은 경우 출력에 사용됩니다.간격 스타일다음으로 설정됨sql_standard.)
간격 값은 다음 중 하나를 사용하여 ISO 8601 사설 토토 간격으로 기록될 수도 있습니다.“지정자가 있는 형식”표준 섹션 4.4.3.2 또는“대체 형식”섹션 4.4.3.3. 지정자가 있는 형식은 다음과 같습니다.
P수량단위[수량단위...] [T [수량단위...]]
문자열은 a로 시작해야 합니다.P, 다음을 포함할 수 있습니다.T사설 토토 단위를 소개합니다. 사용 가능한 단위 약어는 다음과 같습니다.표 8.16. 단위는 생략 가능하고, 순서에 관계없이 지정할 수 있으나, 하루보다 작은 단위는 뒤에 와야 합니다.T. 특히, 다음의 의미는M이전인지 이후인지에 따라 다름T.
표 8.16. ISO 8601 간격 단위 약어
| 약어 | 의미 |
|---|---|
| Y | 년 |
| M | 월(날짜 부분) |
| W | 주 |
| D | 일 |
| H | 사설 토토 |
| M | 분(사설 토토 부분) |
| S | 초 |
대체 형식:
피 [년-개월-일] [ T사설 토토:분:초]
문자열은 다음으로 시작해야 합니다.P그리고T간격의 날짜와 사설 토토 부분을 구분합니다. 값은 ISO 8601 날짜와 유사한 숫자로 제공됩니다.
a로 간격 상수를 쓸 때필드사양 또는 a로 정의된 간격 열에 문자열을 할당하는 경우필드사양, 표시되지 않은 수량의 해석은 다음에 따라 다릅니다.필드. 예를 들어간격 '1'년1년으로 읽히는 반면간격 '1'1초를 의미합니다. 또한 필드 값“오른쪽으로”에서 허용하는 최하위 필드의필드사양은 자동으로 삭제됩니다. 예를 들어, 쓰기간격 '1일 2:03:04' 사설 토토-분초 필드는 삭제되지만 일 필드는 삭제되지 않습니다.
에 따르면SQL표준 간격 값의 모든 필드는 동일한 부호를 가져야 하므로 선행 음수 부호가 모든 필드에 적용됩니다. 예를 들어 간격 리터럴의 음수 기호'-1 2:03:04'일 및 시/분/초 부분 모두에 적용됩니다.포스트그레SQL필드가 서로 다른 부호를 가질 수 있도록 허용하고 전통적으로 텍스트 표현의 각 필드를 독립적으로 부호 있는 것으로 처리하므로 이 예에서는 시/분/초 부분이 양수로 간주됩니다. 만약에간격 스타일다음으로 설정됨sql_standard그러면 선행 기호가 모든 필드에 적용되는 것으로 간주됩니다(그러나 추가 기호가 나타나지 않는 경우에만). 그렇지 않으면 전통적인포스트그레SQL해석이 사용됩니다. 모호함을 피하기 위해 필드가 음수인 경우 각 필드에 명시적인 기호를 첨부하는 것이 좋습니다.
내부적으로,간격값은 월, 일, 마이크로초의 세 가지 정수 필드로 저장됩니다. 한 달의 일수가 다양하고 일광 절약 사설 토토제 전환이 포함된 경우 하루는 23사설 토토 또는 25사설 토토이 될 수 있으므로 이러한 필드는 별도로 유지됩니다. 다른 단위를 사용하는 간격 입력 문자열은 이 형식으로 정규화된 다음 출력을 위해 표준화된 방식으로 재구성됩니다. 예:
SELECT '2년 15개월 100주 99사설 토토 123456789밀리초'::간격;
간격
--------------------------
3년 3월 700일 133:17:36.789
여기서는 다음과 같이 이해되는 주입니다.“7일”은 별도로 유지되었으며 더 작은 사설 토토 단위와 큰 사설 토토 단위를 결합하여 정규화했습니다.
입력 필드 값은 분수 부분을 가질 수 있습니다. 예를 들어'1.5주'또는'01:02:03.45'. 그러나 왜냐하면간격내부에는 정수 필드만 저장하며, 분수 값은 더 작은 단위로 변환해야 합니다. 월보다 큰 단위의 분수 부분은 정수로 반올림됩니다. 예:'1.5년'되다'1년 6개월'. 주와 일의 분수 부분은 한 달에 30일, 하루에 24사설 토토을 가정하여 정수의 일과 마이크로초로 계산됩니다. 예:'1.75개월'되다1월 22일 12:00:00. 초만 출력에서 분수로 표시됩니다.
표 8.17유효한 몇 가지 예를 보여줍니다.간격입력합니다.
표 8.17. 간격입력
| 예 | 설명 |
|---|---|
1-2 |
SQL 표준 형식: 1년 2개월 |
3 4:05:06 |
SQL 표준 형식: 3일 4사설 토토 5분 6초 |
1년 2개월 3일 4사설 토토 5분 6초 |
기존 Postgres 형식: 1년 2개월 3일 4사설 토토 5분 6초 |
P1Y2M3DT4H5M6S |
ISO 8601“지정자가 있는 형식”: 위와 같은 의미 |
P0001-02-03T04:05:06 |
ISO 8601“대체 형식”: 위와 같은 의미 |
앞서 설명했듯이,PostgreSQL상점간격월, 일, 마이크로초 단위의 값입니다. 출력의 경우 월 필드는 12로 나누어 연도 및 월로 변환됩니다. 일 필드는 그대로 표시됩니다. 마이크로초 필드는 사설 토토, 분, 초 및 소수 초로 변환됩니다. 따라서 월, 분, 초는 각각 0~11, 0~59, 0~59 범위를 초과하는 것으로 표시되지 않지만 표시되는 연도, 일, 사설 토토 필드는 상당히 클 수 있습니다. (그만큼justify_days그리고justify_hours큰 날짜 또는 사설 토토 값을 다음 상위 필드로 바꾸는 것이 바람직한 경우 함수를 사용할 수 있습니다.)
간격 유형의 출력 형식은 네 가지 스타일 중 하나로 설정될 수 있습니다.sql_standard, 포스트그레, postgres_verbose또는iso_8601, 명령 사용SET 간격 스타일. 기본값은포스트그레형식.표 8.18shows examples of each output style.
그sql_standardstyle은 간격 값이 표준 제한 사항(양수 및 음수 구성 요소가 혼합되지 않은 연월만 또는 일사설 토토만)을 충족하는 경우 간격 리터럴 문자열에 대한 SQL 표준 사양을 준수하는 출력을 생성합니다. 그렇지 않으면 출력은 혼합 기호 간격을 명확하게 하기 위해 명시적인 기호가 추가된 표준 연월 리터럴 문자열과 일/월 리터럴 문자열처럼 보입니다.
의 출력포스트그레스스타일은 다음의 출력과 일치합니다.포스트그레SQL8.4 이전 버전인 경우날짜 스타일매개변수가 다음으로 설정되었습니다.ISO.
의 출력postgres_verbose스타일은 다음의 출력과 일치합니다.포스트그레SQL8.4 이전 버전인 경우날짜 스타일매개변수가 비-로 설정되었습니다.ISO출력.
의 출력iso_8601스타일이 다음과 일치함“지정자가 있는 형식”ISO 8601 표준의 섹션 4.4.3.2에 설명되어 있습니다.
표 8.18. 간격 출력 스타일 예
| 스타일 사양 | 연-월 간격 | 낮 사설 토토 간격 | 혼합 간격 |
|---|---|---|---|
sql_standard |
1-2 | 3 4:05:06 | -1-2 +3 -4:05:06 |
포스트그레스 |
1년 2개월 | 3일 04:05:06 | -1년 -2개월 +3일 -04:05:06 |
postgres_verbose |
@ 1년 2개월 | @ 3일 4사설 토토 5분 6초 | @ 1년 2개월 -3일 4사설 토토 5분 6초 전 |
iso_8601 |
P1Y2M | P3DT4H5M6S | P-1Y-2M3DT-4H-5M-6S |
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.