이 문서는 지원되지 않는 버전의 PostgreSQL 용입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다PostgreSQL : 문서 : 17 : 9.9. 사설 토토/와이즈 토토 기능 및 운영자버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

9.9. 사설 토토/시간 기능 및 운영자

표 9.30사설 토토/시간 값 처리에 사용 가능한 기능이 표시되며 다음 하위 섹션에 세부 사항이 나타납니다.표 9.29기본 산술 연산자의 동작을 보여줍니다 (+, *등). 함수 서식에 대해서는를 참조하십시오.PostgreSQL : 문서 : 10 : 9.8. 데이터 유형 사설 토토 핫 사설 토토 핫 기능. 사설 토토/시간 데이터 유형에 대한 배경 정보에 익숙해야합니다.PostgreSQL : 문서 : 10 : 8.5. 사설 토토/메이저 토토 사이트 유형.

또한, 일반적인 비교 연산자표 9.1사설 토토/시간 유형에 사용할 수 있습니다. 사설 토토 및 타임 스탬프 (시간대가 있거나없는)는 모두 비슷하지만 시간 (시간대가 있거나없는)은 동일한 데이터 유형의 다른 값과 만 비교할 수 있습니다. 시간대가없는 타임 스탬프를 시간대가있는 타임 스탬프와 비교할 때, 전자 값은에 의해 지정된 시간대에 제공되는 것으로 가정합니다.TimeZone구성 매개 변수, 후자의 값과 비교하기 위해 UTC로 회전합니다 (이미 내부적으로 UTC에 있습니다). 마찬가지로 사설 토토 값은에서 자정을 나타내는 것으로 가정합니다.TimeZone타임 스탬프와 비교할 때 영역.

아래에 설명 된 모든 기능 및 연산자는time또는타임 스탬프입력은 실제로 두 가지 변형으로 제공됩니다.시간대가있는 시간또는시간대가있는 타임 스탬프그리고 가져가는 것이시간대가없는 시간또는시간대가없는 타임 스탬프. 간결하게, 이러한 변종은 별도로 표시되지 않습니다. 또한,+and*운영자는 정류 쌍으로 제공됩니다 (예 : 사설 토토 + 정수 및 정수 + 사설 토토); 우리는 각 쌍 중 하나만 보여줍니다.

표 9.29. 사설 토토/시간 운영자

운영자 example 결과
+ 사설 토토 '2001-09-28' + 정수 '7' 사설 토토 '2001-10-05'
+ 사설 토토 '2001-09-28' + 간격 '1 시간' 타임 스탬프 '2001-09-28 01:00:00'
+ 사설 토토 '2001-09-28' + Time '03 : 00 ' 타임 스탬프 '2001-09-28 03:00:00'
+ 간격 '1 일' + 간격 '1 시간' 간격 '1 일 01:00:00'
+ 타임 스탬프 '2001-09-28 01:00' + 간격 '23 시간 ' 타임 스탬프 '2001-09-29 00:00:00'
+ Time '01 : 00 ' + 간격'3 시간 ' Time '04 : 00 : 00 '
- - 간격 '23 시간 ' 간격 '-23 : 00 : 00'
- 사설 토토 '2001-10-01'-사설 토토 '2001-09-28' 정수 '3'(일)
- 사설 토토 '2001-10-01'-정수 '7' 사설 토토 '2001-09-24'
- 사설 토토 '2001-09-28'-간격 '1 시간' 타임 스탬프 '2001-09-27 23:00:00'
- Time '05 : 00 '-Time '03 : 00' Interval '02 : 00 : 00 '
- Time '05 : 00 ' - 간격'2 시간 ' Time '03 : 00 : 00 '
- 타임 스탬프 '2001-09-28 23:00'-간격 '23 시간 ' 타임 스탬프 '2001-09-28 00:00:00'
- 간격 '1 일' - 간격 '1 시간' 간격 '1 일 -01 : 00 : 00'
- 타임 스탬프 '2001-09-29 03:00'-Stimestamp '2001-09-27 12:00' 간격 '1 일 15:00:00'
* 900 * 간격 '1 초' interval '00 : 15 : 00 '
* 21 * 간격 '1 일' 간격 '21 일 '
* 이중 정밀 '3.5' * 간격 '1 시간' 간격 '03 : 30 : 00 '
/ 간격 '1 시간' / 이중 정밀 '1.5' interval '00 : 40 : 00 '

표 9.30. 사설 토토/시간 기능

기능 반환 유형 설명 example 결과
age (타임 스탬프, 타임 스탬프) 간격 인수를 빼고 aSymbolic단지 며칠이 아닌 몇 년과 몇 달을 사용하는 결과 Age (Timestamp '2001-04-10', Timestamp '1957-06-13') 43 년 9 몬 몬 27 일
age (타임 스탬프) 간격 SUPTRANTcurrent_date(자정에) Age (Timestamp '1957-06-13') 43 년 8 몬 몬 3 일
clock_timestamp () 시간대가있는 타임 스탬프 현재 사설 토토 및 시간 (명세서 실행 중 변경); 보다섹션 9.9.4
current_date 사설 토토 현재 사설 토토; 보다섹션 9.9.4
current_time 시간대가있는 시간 현재 시간; 보다섹션 9.9.4
current_timestamp 시간대가있는 타임 스탬프 현재 사설 토토 및 시간 (현재 거래 시작); 보다섹션 9.9.4
date_part (텍스트, 타임 스탬프) 이중 정밀 서브 필드 받기 (동등한Extract); 보다섹션 9.9.1 date_part ( '시간', 타임 스탬프 '2001-02-16 20:38:40') 20
date_part (텍스트, 간격) 더블 정밀도 서브 필드 얻기 (추출물); 보다섹션 9.9.1 date_part ( 'Month', 간격 '2 년 3 개월') 3
date_trunc (텍스트, 타임 스탬프) 타임 스탬프 지정된 정밀도로 잘린다; 참조 참조섹션 9.9.2 date_trunc ( '시간', 타임 스탬프 '2001-02-16 20:38:40') 2001-02-16 20:00:00
date_trunc (텍스트, 간격) 간격 지정된 정밀도로 잘린다; 참조 참조섹션 9.9.2 date_trunc ( '시간', 간격 '2 일 3 시간 40 분') 2 일 03:00:00
Extract(필드From타임 스탬프) 이중 정밀 서브 필드를 얻으십시오. 보다섹션 9.9.1 Extract (Timestamp '2001-02-16 20:38:40'). 20
추출물(필드간격) 더블 정밀도 서브 필드를 얻으십시오. 보다섹션 9.9.1 Extract (매월 간격 '2 년 3 개월') 3
isfinite (사설 토토) 부울 유한 사설 토토 테스트 (+/- 인피니티가 아님) Isfinite (사설 토토 '2001-02-16') true
isfinite (타임 스탬프) 부울 유한 타임 스탬프 테스트 (+/- 인피니티가 아님) Isfinite (Timestamp '2001-02-16 21:28:30') true
Isfinite (간격) 부울 유한 간격 테스트 Isfinite (간격 '4 시간') true
Justify_Days (간격) 간격 간격 조정 30 일 기간은 몇 달으로 표시됩니다 Justify_days (Interval '35 Days ') 1 월 5 일
Justify_hours (간격) 간격 간격 조정 24 시간 기간은 일로 표시됩니다 Justify_hours (간격 '27 시간 ') 1 일 03:00:00
Justify_Interval (간격) 간격 사용 간격 조정Justify_DaysandJustify_hours, 추가 부호 조정 Justify_Interval (간격 '1 월 1 시간') 29 일 23:00:00
LocalTime Time 현재 시간; 보다섹션 9.9.4
LocalTimestamp 타임 스탬프 현재 사설 토토 및 시간 (현재 트랜잭션 시작); 보다섹션 9.9.4
make_date (Year int, Month int, day int) 사설 토토 연도, 월 및 주간 필드에서 사설 토토 생성 make_date (2013, 7, 15) 2013-07-15
make_interval ( int기본 0, int기본 0, int기본 0,Days int기본 0,시간 int기본 0,mins 29999_30004기본 0,SECS 이중 정밀기본 0.0) 간격 몇 년, 몇 달, 몇 주, 일, 시간, 몇 분 및 초 필드에서 간격을 만듭니다 make_interval (days = 10) 10 일
make_time (Hour int, Min int, SEC 이중 정밀도) Time 시간, 분 및 초 필드에서 시간을 만듭니다 make_time (8, 15, 23.5) 08:15:23.5
make_timestamp ( int, Month int, day int, Hour int, Min int, SEC 이중 정밀) 타임 스탬프 연도, 월, 주, 시간, 시간, 분 및 초 필드에서 타임 스탬프 생성 make_timestamp (2013, 7, 15, 8, 15, 23.5) 2013-07-15 08:15:23.5
make_timestamptz (year int, Month int, day int, Hour int, Min int, SEC 이중 정밀도, [TimeZone 텍스트]) 시간대가있는 타임 스탬프 연도, 월, 일, 시간, 시간, 분 및 초 필드에서 시간대가있는 타임 스탬프를 만듭니다. 만약에TimeZone지정되지 않았으며 현재 시간대가 사용됩니다 make_timestamptz (2013, 7, 15, 8, 15, 23.5) 2013-07-15 08 : 15 : 23.5+01
now () 시간대가있는 타임 스탬프 현재 사설 토토 및 시간 (현재 트랜잭션 시작); 보다섹션 9.9.4
station_timestamp () 시간대가있는 타임 스탬프 현재 사설 토토와 시간 (현재 문의 시작); 보다섹션 9.9.4
TimeOfday () 텍스트 현재 사설 토토와 시간 (keeclock_timestamp하지만텍스트String); 보다섹션 9.9.4
transaction_timestamp () 시간대가있는 타임 스탬프 현재 사설 토토 및 시간 (현재 거래 시작); 보다섹션 9.9.4
TO_TIMESTAMP (이중 정밀) 시간대가있는 타임 스탬프 UNIX EPOCH 변환 (1970-01-01 00 : 00 : 00+00 이후의 초) TO_TIMESTAMP (1284352323) 2010-09-13 04 : 32 : 03+00

이러한 함수 외에도 SQL오버랩운영자가 지원됩니다 :

(start1, end1) 중첩 (start2, end2)
(start1, 길이 1) 중첩 (start2, 길이 2)

이 표현식은 두 시간 (종료 점으로 정의 됨)이 겹치지 않으면 겹치지 않으면 거짓으로 생성됩니다. 종말점은 사설 토토, 시간 또는 타임 스탬프 쌍으로 지정할 수 있습니다. 또는 사설 토토, 시간 또는 타임 스탬프와 간격으로. 한 쌍의 값이 제공되면 시작 또는 끝을 먼저 쓸 수 있습니다.오버랩쌍의 이전 값을 자동으로 시작으로 가져옵니다. 각 기간은 하프 오픈 간격을 나타내는 것으로 간주됩니다시작 <= Time < END,시작END동일하게 해당 단일 시간을 나타냅니다. 예를 들어, 종말점 만있는 두 가지 기간은 겹치지 않는다는 것을 의미합니다.

선택 (사설 토토 '2001-02-16', 사설 토토 '2001-12-21') 중첩
       (사설 토토 '2001-10-30', 사설 토토 '2002-10-30');결과 :true선택 ( '2001-02-16', 간격 '100 일') 중첩
       (사설 토토 '2001-10-30', 사설 토토 '2002-10-30');결과 :거짓선택 (사설 토토 '2001-10-29', 사설 토토 '2001-10-30') 중첩
       (사설 토토 '2001-10-30', 사설 토토 '2001-10-31');결과 :거짓선택 (사설 토토 '2001-10-30', 사설 토토 '2001-10-30')은 중첩됩니다
       (사설 토토 '2001-10-30', 사설 토토 '2001-10-31');결과 :true

추가 할 때간격값으로 (또는 SUPTRANTING간격값에서) a시간대가있는 타임 스탬프값, 값, 요일 구성 요소가 발전하거나 사설 토토를 줄입니다시간대가있는 타임 스탬프지시 된 일 수는 시간을 동일하게 유지합니다. 일광 절약 시간 절약 시간 변경 (세션 시간대가 DST를 인식하는 시간대로 설정 될 때)간격 '1 일'반드시 동일하지는 않습니다간격 '24 시간 '. 예를 들어, 세션 시간대가로 설정된 상태에서America/Denver:

시간대가있는 타임 스탬프를 선택하십시오 '2005-04-02 12 : 00 : 00-07' + 간격 '1 일';결과 :2005-04-03 12:00:00-06타임 존 '2005-04-02 12 : 00 : 00-07' + 간격 '24 시간 ';로 타임 스탬프를 선택하십시오.결과 :2005-04-03 13:00:00-06

이것은 일광 절약 시간의 변화로 인해 한 시간이 건너 웠기 때문에 발생합니다2005-04-03 02:00:00시간대에서America/Denver.

참고에 모호성이있을 수 있습니다.필드에 의해 반품Age달이 다르기 때문에 일수가 다르기 때문입니다.PostgreSQL의 접근 방식은 부분 달을 계산할 때 두 사설 토토 이전의 월을 사용합니다. 예를 들어,Age ( '2004-06-01', '2004-04-30')4 월을 사용하여 수율1 월 1 일, May를 사용하는 동안1 월 2 일5 월은 31 일이므로 4 월은 30 일에 불과합니다.

사설 토토와 타임 스탬프의 뺄셈도 복잡 할 수 있습니다. 뺄셈을 수행하는 개념적으로 간단한 방법 중 하나는 각 값을 사용하여 각 값을 여러 초로 변환하는 것입니다.Extract (Epoch from ...), 결과를 빼십시오. 이것은의 수를 생성합니다두 값 사이. 이는 매월 일수, 시간대 변경 및 일광 절약 시간 조정에 맞게 조정됩니다. 사설 토토 또는 타임 스탬프 값의 빼기-운영자는 값 사이의 일 (24 시간)과 시간/분/초를 반환하여 동일한 조정을합니다. 그만큼Age함수는 연도, 몇 달, 며칠, 시간/분/초를 반환하여 필드 별 뺄셈을 수행 한 다음 음의 필드 값을 조정합니다. 다음 쿼리는 이러한 접근법의 차이점을 보여줍니다. 샘플 결과는로 생성되었습니다.TimeZone = 'US/Eastern'; 사용 된 두 사설 토토 사이에 일광 절약 시간 변경이 있습니다.

추출을 선택하십시오 (Timestamptz의 2013-07-01 12:00:00 ')-
       추출물 (Timestamptz의 2013-03-01 12:00:00 ');결과 :10537200select (timestamptz의 2013-07-01 12:00:00 ')-추출물 (Epoch)--
        추출물 (Timestamptz의 2013-03-01 12:00:00 ')))))))))
        / 60 / 60 / 24;결과 :121.958333333333TimesTamptz '2013-07-01 12:00:00'-TimesTamptz '2013-03-01 12:00:00'; 선택 선택결과 :121 일 23:00:00연령 선택 (Timestamptz '2013-07-01 12:00:00', Timestamptz '2013-03-01 12:00:00');결과 :4 Mons

9.9.1. Extract, date_part

Extract (필드From소스)

theExtract함수는 사설 토토/시간 값에서 해 또는 시간과 같은 서브 필드를 검색합니다.소스유형의 값 표현식이어야합니다타임 스탬프, Time또는간격. (유형의 표현사설 토토타임 스탬프따라서 사용할 수 있습니다.)필드는 소스 값에서 추출 할 필드를 선택하는 식별자 또는 문자열입니다. 그만큼추출물함수 유형 값을 반환이중 정밀도. 다음은 유효한 필드 이름입니다.

Century

세기

추출을 선택하십시오 (Timestamp '2000-12-16 12:21:13');결과 :20Extract (TimeStamp '2001-02-16 20:38:40'); 추출을 선택하십시오.결과 :21

1 세기는 당시에는 알지 못했지만 0001-01-01 00:00:00에서 시작합니다. 이 정의는 모든 Gregorian 달력 국가에 적용됩니다. 세기 번호 0은 없으며, 당신은 -1 세기에서 1 세기로갑니다. 당신이 이것에 동의하지 않으면, 당신의 불만을 다음과 같이, : 교황, 바티칸, 로마의 대성당 생피 터.

day

for타임 스탬프값, 월 (월) 필드 (1-31); 을 위한간격값, 일수

추출을 선택하십시오 (Timestamp '2001-02-16 20:38:40');결과 :16추출물 선택 (간격 '40 일 1 분 ');결과 :40
10 년

연도 필드는 10으로 나뉩니다.

추출을 선택하십시오 (Timestamp '2001-02-16 20:38:40');결과 :200
dow

일요일과 같은 요일 (0) ~ 토요일 (6)

추출을 선택하십시오 (Timestamp '2001-02-16 20:38:40');결과 :5

참고Extract의 날의 날의 날은와 다릅니다.to_char (..., 'd')함수.

doy

일년의 날 (1-365/366)

추출을 선택하십시오 (Timestamp '2001-02-16 20:38:40');결과 :47
epoch

for시간대가있는 타임 스탬프값, 1970-01-01 00:00:00 이후의 초 수 을 위한사설 토토타임 스탬프값, 시간대 또는 일광 절약 규칙에 관계없이 1970-01-01 00:00:00 이후의 명목상 초의 명목 수; 을 위한간격값, 간격의 총 초 수

추출을 선택하십시오 (TimeStamp with Time Zone '2001-02-16 20 : 38 : 40.12-08');.결과 :982384720.12추출을 선택하십시오 (Timestamp '2001-02-16 20 : 38 : 40.12');결과 :982355920.12추출을 선택하십시오 (간격 '5 일 3 시간');결과 :442800

에포크 값을 A로 다시 변환 할 수 있습니다시간대가있는 타임 스탬프withTO_TIMESTAMP:

to_timestamp (982384720.12); 선택결과 :2001-02-17 04 : 38 : 40.12+00

적용에주의하십시오TO_TIMESTAMPa에서사설 토토또는타임 스탬프값은 오해의 소지가있는 결과를 낳을 수 있습니다. 결과는 UTC에서 원래 값이 주어 졌다고 효과적으로 가정 할 것입니다..

Hour

시간 필드 (0-23)

추출을 선택하십시오 (시간 시간에서 시간 시간 2001-02-16 20:38:40 ');결과 :20
ISODOW

월요일과 같은 요일 (1) ~ 일요일 (7)

Extract (Timestamp의 Isodow '2001-02-18 20:38:40');결과 :7

이것은 동일합니다dow일요일을 제외하고. 이것은와 일치합니다.ISO8601 주 번호 번호.

Isoyear

theISO8601 사설 토토가 떨어지는 주 1 주일 (간격에 적용되지 않음)

Extract (Isoyear from Date '2006-01-01');결과 :2005Extract (Isoyear from Date '2006-01-02');결과 :2006

ISO8601 주 번호 연도는 1 월 4 일 월요일부터 시작되므로 1 월 초 또는 12 월 말에ISO연도는 Gregorian 년과 다를 수 있습니다. 참조자세한 내용은 필드

이 필드는 8.3 이전에 PostgreSQL 릴리스에서 사용할 수 없습니다.

줄리안

the줄리안 사설 토토사설 토토 또는 타임 스탬프에 해당합니다 (간격에 적용되지 않음). 로컬 자정이 아닌 타임 스탬프는 분수 값을 초래합니다. 보다섹션 B.7자세한 내용은

Extract (Julian From Date '2006-01-01');결과 :2453737Extract (Timestamp의 Julian 2006-01-01 12:00 ');결과 :2453737.5
마이크로 초

분수 부품을 포함한 초 필드는 1,000 000을 곱한 것; 여기에는 전체 초가 포함되어 있습니다

추출을 선택하십시오 (Time '17 : 12 : 28.5 '의 마이크로 초);결과 :28500000
밀레니엄

밀레니엄

Extract (TimeStamp '2001-02-16 20:38:40'); 추출물을 선택하십시오.결과 :3

1900 년대의 몇 년은 2 천년입니다. 3 천년은 2001 년 1 월 1 일에 시작되었습니다.

milliseconds

분수 부품을 포함한 초 필드는 1000을 곱합니다. 여기에는 전체 초가 포함되어 있습니다.

추출을 선택하십시오 (Time '17 : 12 : 28.5 '에서 밀리 초);결과 :28500
Minute

분 필드 (0-59)

추출을 선택하십시오 (Timestamp에서 분에서 분에서 minute '2001-02-16 20:38:40');결과 :38
Month

for타임 스탬프값, 연도 내 월 수 (1-12); 을 위한간격값, 달의 수, 모듈로 12 (0-11)

추출을 선택하십시오 (TimeStamp '2001-02-16 20:38:40');결과 :2추출을 선택하십시오 (매월 '2 년 3 개월');결과 :3추출을 선택하십시오 (매월 '2 년 13 개월');결과 :1
Quarter

사설 토토가있는 해 (1-4)

추출을 선택하십시오 (TimeStamp '2001-02-16 20:38:40');결과 :1
두 번째

분수 부품을 포함한 초 필드 (0-59[7])

추출을 선택하십시오 (Timestamp '2001-02-16 20:38:40');결과 :40추출을 선택하십시오 (두 번째 시간 '17 : 12 : 28.5 ');결과 :28.5
TimeZone

UTC에서 시간대가 오프셋되어 몇 초 만에 측정됩니다. 양수 값은 UTC의 동쪽 시간 영역, UTC 서쪽 구역에 대한 음수 값에 해당합니다. (기술적으로PostgreSQL도약 초가 처리되지 않기 때문에 UTC를 사용하지 않습니다.)

Timezone_hour

시간대 오프셋의 시간 구성 요소

Timezone_Minute

시간대 오프셋의 미세 구성 요소

ISO8601 일주일. 정의에 따르면, ISO Weeks는 월요일에 시작되며 첫 주에는 그 해의 1 월 4 일이 포함됩니다. 다시 말해, 1 년의 첫 번째 목요일은 그 해의 1 주차입니다.

ISO 주중 번호 시스템에서 1 월 초반 사설 토토는 전년도의 52 또는 53 주에 일부가 될 수 있으며, 12 월 후반 사설 토토는 내년 첫 주의 일부가 될 수 있습니다. 예를 들어,2005-01-012004 년 53 주차의 일부이며2006-01-01| 2005 년 52 주차의 일부이며2012-12-312013 년 첫 주의 일부입니다.Isoyear함께 필드일관된 결과를 얻으려면

추출을 선택하십시오 (Timestamp '2001-02-16 20:38:40');결과 :7
Year

올해 필드. 없음을 명심하십시오0 AD, SO SUTCARTINGBCad연년교는 조심해야합니다.

추출을 선택하십시오 (Timestamp '2001-02-16 20:38:40');결과 :2001

Note

입력 값이 +/- 인피니티 인 경우Extract단조로 인한 필드에 대한 +/- 인피니티 (epoch, 줄리안, , Isoyear, 10 년, Century밀레니엄). 다른 필드의 경우 Null이 반환됩니다.PostgreSQL무한 입력의 모든 경우에 대해 9.6 전 버전이 0을 반환했습니다.

theExtract함수는 주로 계산 처리를위한 것입니다. 표시의 사설 토토/시간 값 서식은 참조PostgreSQL : 문서 : 10 : 9.8. 데이터 유형 사설 토토 핫 사설 토토 핫 기능.

thedate_part함수는 전통적으로 모델링됩니다IngresSQL-스탠드 함수Extract:

date_part ( '필드',소스)

여기서에 유의하십시오.필드매개 변수는 이름이 아닌 문자열 값이어야합니다. 유효한 필드 이름date_part와 동일합니다Extract.

date_part를 선택하십시오 ( 'day', timestamp '2001-02-16 20:38:40');결과 :16date_part ( '시간', 간격 '4 시간 3 분'); 선택결과 :4

9.9.2. date_trunc

함수date_trunc개념적으로Trunc숫자에 대한 기능.

date_trunc ( '필드',소스)

소스유형의 값 표현식타임 스탬프또는간격. (유형의 값사설 토토Time자동으로 캐스트타임 스탬프또는간격각각.)필드입력 값을 자울 수있는 정밀도를 선택합니다. 반환 값은 유형입니다타임 스탬프또는간격선택한 하나의 세트보다 덜 중요 한 모든 필드 (또는 요일 및 월)..

유효한 값필드are :

마이크로 초
milliseconds
Second
Minute
Hour
day
Week
Month
Quarter
Year
10 년
Century
밀레니엄

예 :

date_trunc ( '시간', 타임 스탬프 '2001-02-16 20:38:40'); 선택결과 :2001-02-16 20:00:00date_trunc ( 'year', timestamp '2001-02-16 20:38:40'); 선택결과 :2001-01-01 00:00:00

9.9.3. at Time Zone

the시간대에서타임 스탬프 변환시간대가없는TO/FROM TIME Stamp시간대와 함께시간다른 시간대에 대한 값.표 9.31변형을 보여줍니다.

표 9.31. at Time Zone​​변형

표현 반환 유형 설명
시간대가없는 타임 스탬프시간대에서Zone 시간대가있는 타임 스탬프 주어진 시간 스탬프 처리시간대가없는지정된 시간대에 위치한대로
시간대가있는 타임 스탬프at Time ZoneZone 시간대가없는 타임 스탬프 주어진 시간 스탬프 변환시간대와 함께시간대 지정이없는 새로운 시간대로
시간대가있는 시간시간대에서Zone 시간대가있는 시간 주어진 시간 변환시간대와 함께새로운 시간대

이 표현에서 원하는 시간대Zone텍스트 문자열로 지정할 수 있습니다 (예 :'America/Los_angeles') 또는 간격으로 (예 :간격 '-08 : 00'). 텍스트의 경우, 시간대 이름은에 설명 된 모든 방법으로 지정할 수 있습니다.섹션 8.5.3.

예제 (현지 시간대가America/Los_angeles) :

TimeStamp '2001-02-16 20:38:40'At Time Zone 'America/Denver'; 선택하십시오.결과 :2001-02-16 19:38:40-08타임 존 '2001-02-16 20 : 38 : 40-05'at Time Zone 'America/Denver';로 타임 스탬프를 선택하십시오.결과 :2001-02-16 18:38:40TimeStamp '2001-02-16 20 : 38 : 40-05'At Time Zone 'Asia/Tokyo'At Time Zone 'America/Chicago'; 선택하십시오.결과 :2001-02-16 05:38:40

첫 번째 예제는 타임 존을 부족한 값에 추가하고 현재를 사용하여 값을 표시합니다TimeZone설정. 두 번째 예제는 타임 스탬프를 시간대 값으로 지정된 시간대로 이동시키고 시간대없이 값을 반환합니다. 이것은 현재와 다른 값의 저장 및 표시를 허용합니다타임 존설정. 세 번째 예제는 도쿄 시간을 시카고 시간으로 전환합니다. 변환Time다른 시간에 대한 값 영역은 현재 활성 시간대 규칙을 사용하여 사설 토토가 제공되지 않기 때문에 현재 활성 시간대 규칙을 사용합니다.

함수TimeZone(Zone, 타임 스탬프)SQL 기능 구조와 동일합니다타임 스탬프시간대에서Zone.

9.9.4. 현재 사설 토토/시간

PostgreSQL현재 사설 토토 및 시간과 관련된 값을 반환하는 여러 기능을 제공합니다. 이 SQL 표준은 현재 트랜잭션의 시작 시간에 따라 모든 반환 값을 기능합니다.

current_date
current_time
current_timestamp
current_time (정밀)
current_timestamp (정밀)
로컬 타임
localtimestamp
로컬 타임 (정밀)
LocalTimestamp (정밀)

current_timeandcurrent_timestamp시간대와 함께 값을 전달;LocalTimeandLocalTimestamp시간대가없는 값 전달.

current_time, current_timestamp, LocalTimelocaltimestamp선택적으로 정밀 매개 변수를 가져갈 수있어 결과가 초 필드의 많은 분수 숫자로 반올림됩니다. 정밀 매개 변수가 없으면 결과는 사용 가능한 전체 정밀도로 제공됩니다.

일부 예 :

current_time을 선택하십시오;결과 :14:39:53.662522-05current_date; 선택결과 :2001-12-23current_timestamp; 선택결과 :2001-12-23 14:39:53.662522-05current_timestamp (2); 선택결과 :2001-12-23 14:39:53.66-05LocalTimestamp 선택;결과 :2001-12-23 14:39:53.662522

이 함수는 현재 트랜잭션의 시작 시간을 리턴하므로 거래 중에 그 값이 변경되지 않습니다. 이것은 특징으로 간주됩니다. 의도는 단일 트랜잭션이 일관된 개념을 갖도록하는 것입니다.현재시간, 동일한 트랜잭션 내에서 다중 수정이 같은 시간 스탬프를 부여하도록합니다.

Note

다른 데이터베이스 시스템이 이러한 값을 더 자주 발전시킬 수 있습니다.

PostgreSQL는 또한 현재 문의 시작 시간을 반환하는 함수뿐만 아니라 순간의 실제 전류 시간을 제공합니다. 비 SQL 표준 시간 기능의 전체 목록은 다음과 같습니다.

transaction_timestamp ()
state_timestamp ()
clock_timestamp ()
시간의 시간 ()
지금()

transaction_timestamp ()current_timestamp, 그러나 반환 내용을 명확하게 반영하도록 지명되었습니다.station_timestamp ()현재 문의 시작 시간을 반환합니다 (특히 클라이언트로부터 최신 명령 메시지를 수신하는 시간)..station_timestamp ()andtransaction_timestamp ()거래의 첫 명령 중에 동일한 값을 반환하지만 후속 명령 중에는 다를 수 있습니다.clock_timestamp ()실제 현재 시간을 반환하므로 단일 SQL 명령 내에서도 값이 변경됩니다.TimeOfday ()역사적입니다PostgreSQL함수. 좋다clock_timestamp (), 실제 현재 시간을 반환하지만 형식으로텍스트a가 아닌 문자열시간대가있는 타임 스탬프value.now ()전통적인PostgreSQL동등한transaction_timestamp ().

모든 사설 토토/시간 데이터 유형은 특별한 리터럴 값도 허용now현재 사설 토토와 시간을 지정하려면 (다시, 트랜잭션 시작 시간으로 해석). 따라서 다음 세 가지 모두 동일한 결과를 반환합니다.

current_timestamp 선택;
지금 ()을 선택하십시오.
타임 스탬프 '지금'을 선택하십시오.  -하지만 아래 팁 참조

나중에 평가할 값을 지정할 때는 세 번째 양식을 사용하지 마십시오. 예를 들어기본값테이블 열의 조항. 시스템이 변환됩니다nowto a타임 스탬프상수가 구문 분석하자마자 기본값이 필요할 때 테이블 생성 시간이 사용됩니다! 처음 두 가지 양식은 기본값이 사용될 때까지 평가되지 않습니다. 함수 호출이기 때문입니다. 따라서 이들은 행 삽입 시간에 대한 불이행의 원하는 동작을 제공 할 것입니다. (참조섹션 8.5.1.4.)

9.9.5. 실행 지연

서버 프로세스의 실행을 지연시키기 위해 다음 기능을 사용할 수 있습니다.

pg_sleep ()
pg_sleep_for (간격)
pg_sleep_until (시간대가있는 타임 스탬프)

pg_sleep현재 세션의 프로세스가 잠을 자게 만듭니다초가 경과했습니다.유형의 가치이중 정밀, 따라서 분수 초 지연을 지정할 수 있습니다.pg_sleep_for|간격. pg_sleep_until는 특정 모닝 시간이 필요한 경우 편의 기능입니다. 예를 들어:

선택 PG_SLEEP (1.5);
pg_sleep_for ( '5 분')를 선택하십시오.
pg_sleep_until을 선택하십시오 ( '내일 03:00');

Note

수면 간격의 효과적인 해상도는 플랫폼 별입니다. 0.01 초는 공통 값입니다. 수면 지연은 최소한 지정된만큼 길다. 서버로드와 같은 요소에 따라 더 길 수 있습니다. 특히,pg_sleep_until지정된 시간에 정확히 깨어나는 것이 보장되지는 않지만 더 일찍 일어나지 않을 것입니다.

경고

호출 할 때 세션이 필요 이상으로 더 많은 자물쇠를 보유하지 않도록하십시오PG_SLEEP또는 그 변형. 그렇지 않으면 다른 세션이 수면 과정을 기다려야 전체 시스템을 늦추어야 할 수도 있습니다.



[7]60 운영 체제에서 도약 초를 구현 한 경우