9.9. 날짜/시간 기능 및 운영자#

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

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

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

표 9.32. 날짜/시간 운영자

운영자

설명

예제

날짜 + Integer날짜

날짜에 며칠 더 추가

날짜 '2001-09-28' + 72001-10-05

날짜 + 간격타임 스탬프

날짜 간격 추가

날짜 '2001-09-28' + 간격 '1 시간'2001-09-28 01:00:00

날짜 + Time타임 스탬프

날짜에 시간 추가

날짜 '2001-09-28' + 시간 '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 + 간격Time

시간 간격 추가

Time '01 : 00 ' + 간격'3 시간 '04:00:00

- 간격간격

간격 부정

- 간격 '23 시간 '-23:00:00

날짜 - 날짜Integer

날짜를 빼고 경과 한 일 수를 생성

날짜 '2001-10-01'-날짜 '2001-09-28'3

날짜 - Integer날짜

날짜부터 며칠을 빼십시오

날짜 '2001-10-01'-72001-09-24

날짜 - 간격타임 스탬프

날짜부터 간격을 빼

날짜 '2001-09-28'-간격 '1 시간'2001-09-27 23:00:00

Time - Time간격

SUPTRACT TIMES

Time '05 : 00 '-Time '03 : 00'02:00:00

TIME - 간격TIME

시간에서 간격을 빼

Time '05 : 00 ' - 간격'2 시간 '03:00:00

타임 스탬프 - 간격타임 스탬프

타임 스탬프에서 간격을 빼십시오

타임 스탬프 '2001-09-28 23:00'-간격 '23 시간 '2001-09-28 00:00:00

간격 - 간격간격

간격을 빼기

간격 '1 일' - 간격 '1 시간'1 일 -01 : 00 : 00

타임 스탬프 - 타임 스탬프간격

타임 스탬프를 빼고 (24 시간 간격을 일로 변환하는 것과 유사하게Justify_Hours ())

타임 스탬프 '2001-09-29 03:00'-Stimestamp '2001-07-27 12:00'63 일 15:00:00

간격 * 이중 정밀간격

스칼라로 간격을 곱합니다

간격 '1 초' * 90000:15:00

간격 '1 일' * 2121 일

간격 '1 시간' * 3.503:30:00

간격 / 이중 정밀간격

스칼라로 간격을 나눕니다

간격 '1 시간' / 1.500:40:00


표 9.33. 날짜/시간 기능

기능

설명

예제

Age(타임 스탬프, 타임 스탬프) →간격

인수를 빼고 aSymbolic단지 며칠이 아닌 몇 년과 몇 달을 사용하는 와이즈 토토

Age (Timestamp '2001-04-10', Timestamp '1957-06-13')43 세 9 몬 몬 27 일

Age(타임 스탬프) →간격

|current_date(자정에)

Age (Timestamp '1957-06-13')62 년 6 몬 몬 10 일

clock_timestamp() →시간대가있는 타임 스탬프

현재 날짜 및 시간 (명령문 실행 중 변경); 보다섹션 9.9.5

clock_timestamp ()2019-12-23 14:39:53.662522-05

current_date날짜

현재 날짜; 보다섹션 9.9.5

current_date2019-12-23

current_time와이즈 토토가있는 시간

현재 시간; 보다섹션 9.9.5

current_time14:39:53.662522-05

current_time(정수) →와이즈 토토가있는 시간

정밀도가 제한된 현재 시간; 보다섹션 9.9.5

current_time (2)14:39:53.66-05

current_timestamp시간대가있는 타임 스탬프

현재 날짜 및 시간 (현재 트랜잭션 시작); 보다섹션 9.9.5

current_timestamp2019-12-23 14:39:53.662522-05

current_timestamp(Integer) →시간대가있는 타임 스탬프

현재 날짜와 시간 (현재 트랜잭션 시작), 정밀도가 제한되어 있습니다. 보다섹션 9.9.5

current_timestamp (0)2019-12-23 14:39:53-05

date_add(시간대가있는 타임 스탬프, 간격[, 텍스트]) →시간대가있는 타임 스탬프

추가간격to a시간대가있는 타임 스탬프, 세 번째 인수에 의해 명명 된 시간대 또는 현재의 시간 구역에 따른 계산 시간 및 일광 절약 조정 조정.TIMEZONE생략 된 경우 설정. 두 가지 인수가있는 양식은와 같습니다.시간대가있는 타임 스탬프 + 간격운영자.

date_add ( '2021-10-31 00 : 00 : 00 : 00+02':: timestamptz, '1 일':: 간격, '유럽/바르샤바')2021-10-31 23 : 00 : 00+00

date_bin(간격, 타임 스탬프, 타임 스탬프) →타임 스탬프

지정된 원점과 정렬 된 지정된 간격으로의 빈 입력; 보다섹션 9.9.3

date_bin ('15 분 ', 타임 스탬프'2001-02-16 20:38:40 ', 타임 스탬프'2001-02-16 20:05:00 ')2001-02-16 20:35:00

date_part(텍스트, 타임 스탬프) →이중 정밀

타임 스탬프 서브 필드 가져 오기 (Extract); 보다섹션 9.9.1

date_part ( '시간', 타임 스탬프 '2001-02-16 20:38:40')20

date_part(텍스트, 간격) →이중 정밀

간격 서브 필드 get (Extract); 보다섹션 9.9.1

date_part ( '달', 간격 '2 년 3 개월')3

date_subtract(시간대가있는 타임 스탬프, 간격[, 텍스트]) →시간대가있는 타임 스탬프

SUPTRANT A간격a시간대가있는 타임 스탬프, 세 번째 인수에 의해 명명 된 시간대 또는 현재의 시간 구역에 따른 계산 시간 및 일광 절편 조정 조정.타임 존생략 된 경우 설정. 두 가지 인수가있는 양식은와 같습니다.시간대가있는 타임 스탬프 - 간격운영자.

date_subract ( '2021-11-01 00 : 00 : 00 : 00+01':: Timestamptz, '1 일':: 간격, '유럽/바르샤바')2021-10-30 22 : 00 : 00+00

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 ( 'day', timestamptz '2001-02-16 20 : 38 : 40+00', 'Australia/Sydney')2001-02-16 13 : 00 : 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

추출물(필드 From 간격) →숫자

간격 서브 필드 얻기; 보다섹션 9.9.1

추출물 (간격 '2 년 3 개월')3

Isfinite(날짜) →부울

유한 날짜 테스트 (+/- 인피니티가 아님)

Isfinite (날짜 '2001-02-16')true

Isfinite(타임 스탬프) →부울

유한 타임 스탬프 테스트 (+/- 인피니티가 아님)

Isfinite (Timestamp 'Infinity')거짓

Isfinite(간격) →부울

유한 간격 테스트 (현재 항상 참)

Isfinite (간격 '4 시간')true

Justify_Days(간격) →간격

30 일 기간을 몇 개월로 변환하는 간격 조정

Justify_days (간격 '1 년 65 일')1 년 2 월 5 일

Justify_hours(간격) →간격

간격 조정, 24 시간 기간을 일로 변환

Justify_hours (간격 '50 시간 10 분 ')2 일 02:10:00

Justify_Interval(간격) →간격

사용 간격 조정Justify_DaysandJustify_hours, 추가 표시 조정

Justify_Interval (간격 '1 월 1 시간')29 일 23:00:00

LocalTime시간

현재 시간; 보다섹션 9.9.5

LocalTime14:39:53.662522

로컬 타임(Integer) →Time

정밀도가 제한된 현재 시간; 보다섹션 9.9.5

LocalTime (0)14:39:53

LocalTimestamp타임 스탬프

현재 날짜 및 시간 (현재 트랜잭션 시작); 보다섹션 9.9.5

LocalTimestamp2019-12-23 14:39:53.662522

LocalTimestamp(Integer) →타임 스탬프

현재 날짜와 시간 (현재 트랜잭션 시작), 정밀도가 제한적입니다. 보다섹션 9.9.5

LocalTimestamp (2)2019-12-23 14:39:53.66

make_date( int, Month int, day int) →날짜

연도, 월 및 주간 필드에서 날짜 창출 (부정적인 해는 BC를 나타냅니다)

make_date (2013, 7, 15)2013-07-15

make_interval([ int[, int[, int[, days int[, 시간 int[, mins int[, SECS 이중 정밀도]]]]]]]) →간격

몇 년, 몇 달, 몇 주, 일, 시간, 몇 분 및 초 필드에서 간격을 만듭니다.

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(Year 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( int, Month int, day int, Hour int, Min int, SEC 이중 정밀[, 타임 존 텍스트]) →시간대가있는 타임 스탬프

연도, 월, 일, 시간, 시간, 분 및 초 필드에서 시간대가있는 타임 스탬프를 만듭니다 (부정적인 해는 BC를 나타냅니다). 만약에TimeZone지정되지 않았으며 현재 시간대가 사용됩니다. 예제는 세션 시간대가라고 가정합니다.유럽/런던

make_timestamptz (2013, 7, 15, 8, 15, 23.5)2013-07-15 08 : 15 : 23.5+01

make_timestamptz (2013, 7, 15, 8, 15, 23.5, 'America/New_York')2013-07-15 13 : 15 : 23.5+01

지금() →시간대가있는 타임 스탬프

현재 날짜 및 시간 (현재 거래 시작); 보다섹션 9.9.5

now ()2019-12-23 14:39:53.662522-05

station_timestamp() →시간대가있는 타임 스탬프

현재 날짜 및 시간 (현재 문의 시작); 보다섹션 9.9.5

station_timestamp ()2019-12-23 14:39:53.662522-05

Timeofday() →텍스트

현재 날짜 및 시간 (keeclock_timestamp하지만텍스트String); 보다섹션 9.9.5

TimeOfday ()MON 12 월 23 일 14 : 39 : 53.662522 2019 EST

transaction_timestamp() →시간대가있는 타임 스탬프

현재 날짜 및 시간 (현재 거래 시작); 보다섹션 9.9.5

transaction_timestamp ()2019-12-23 14:39:53.662522-05

TO_TIMESTAMP(이중 정밀) →시간대가있는 타임 스탬프

UNIX EPOCH 변환 (1970-01-01 00 : 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,시작andEND동일하게 해당 단일 시간을 나타냅니다. 예를 들어, 종말점 만있는 두 가지 기간은 겹치지 않는다는 것을 의미합니다.

선택 ( '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');와이즈 토토 :false선택 ( '2001-10-30', 날짜 '2001-10-30') 중첩
       (날짜 '2001-10-30', 날짜 '2001-10-31');와이즈 토토 :true

추가 할 때간격값 (또는 SUPTRANTING간격값에서) a타임 스탬프또는시간대가있는 타임 스탬프가치, 달, 일 및 마이크로 초 필드의간격값은 차례로 처리됩니다. 첫째, 0 개월이 아닌 현장 현장은 표시된 달의 시간을 표시하거나 줄어들어 새 달의 끝이 지나지 않는 한, 그 달의 마지막 날은 사용됩니다. (예를 들어, 3 월 31 일 플러스 1 개월은 4 월 30 일이되지만 3 월 31 일 + 2 개월은 5 월 31 일이됩니다.) 그러면 제비 요일이 표시된 일 수로 타임 스탬프 날짜를 줄입니다. 이 두 단계에서 현지 시간은 동일하게 유지됩니다. 마지막으로, 0이 아닌 마이크로 초 필드가 있으면 문자 그대로 추가되거나 빼냅니다. a에서 산술을 할 때시간대가있는 타임 스탬프DST를 인식하는 시간대의 값, 이는 추가 또는 빼기 (say)을 의미합니다.간격 '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 일에 불과합니다.

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

추출을 선택하십시오 (Timestamptz의 2013-07-01 12:00:00 ')-
       추출물 (Timestamptz의 2013-03-01 12:00:00 ');와이즈 토토 :10537200.000000select (timestamptz의 2013-07-01 12:00:00 ')-Extract (Epoch)-
        추출물 (Timestamptz의 2013-03-01 12:00:00 ')))))))))
        / 60 / 60 / 24;와이즈 토토 :121.9583333333333333TimesTamptz '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함수는 날짜/시간 값에서 해 또는 시간과 같은 서브 필드를 검색합니다.소스유형의 값 표현이어야합니다타임 스탬프, 날짜, 시간, 또는간격. (타임 스탬프와 시간은 시간대가 있거나없는 시간에있을 수 있습니다.)필드는 소스 값에서 추출 할 필드를 선택하는 식별자 또는 문자열입니다. 모든 입력 데이터 유형에 모든 필드가 유효하지는 않습니다. 예를 들어, 하루보다 작은 필드는 a에서 추출 할 수 없습니다.날짜, 하루 이상의 필드는 a를 추출 할 수 없습니다.TIME. 그만큼Extract함수 유형 값을 반환숫자.

다음은 유효한 필드 이름입니다 :

Century

세기; 을 위한간격값, 연도 필드는 100으로 나눈

추출을 선택하십시오 (Timestamp '2000-12-16 12:21:13');와이즈 토토 :20추출을 선택하십시오 (Timestamp '2001-02-16 20:38:40');와이즈 토토 :21Extract (Century From Date '0001-01-01 AD'); 선택을 선택하십시오.와이즈 토토 :1추출을 선택하십시오 (Century From Date '0001-12-31 BC');와이즈 토토 :-1추출을 선택하십시오 (Century From Interval '2001 년');와이즈 토토 :20
day

월의 날 (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 이후의 초 수 을 위한날짜and타임 스탬프값, 시간대 또는 일광 절약 규칙에 관계없이 1970-01-01 00:00:00 이후의 명목상 초의 명목 수; 을 위한간격값, 간격의 총 초 수

추출을 선택하십시오 (시간대가있는 타임 스탬프의 에포크 '2001-02-16 20 : 38 : 40.12-08');와이즈 토토 :982384720.120000추출을 선택하십시오 (Timestamp '2001-02-16 20 : 38 : 40.12');와이즈 토토 :982355920.120000Extract (Epoch From '5 Days 3 시간');와이즈 토토 :442800.000000

에포크 값을 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 주일이 날짜가 떨어지는 연도

Extract (Isoyear from Date '2006-01-01');와이즈 토토 :2005Extract (Isoyear from Date '2006-01-02');와이즈 토토 :2006

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

줄리안

the줄리안 날짜날짜 또는 타임 스탬프에 해당합니다. 로컬 자정이 아닌 타임 스탬프는 분수 값을 초래합니다. 보다섹션 B.7자세한 내용은

Extract (Julian From Date '2006-01-01');와이즈 토토 :2453737Extract (Timestamp '2006-01-01 12:00'); Extract를 선택하십시오.와이즈 토토 :2453737.50000000000000000000
마이크로 초

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

추출을 선택하십시오 (Time '17 : 12 : 28.5 '의 마이크로 초);와이즈 토토 :28500000
Millennium

밀레니엄; 을 위한간격값, 연도 필드는 1000으로 나눈

Extract Extract (Timestamp '2001-02-16 20:38:40');와이즈 토토 :3Extract (Interval '2001 년')에서 밀레니엄을 선택하십시오.와이즈 토토 :2

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

milliseconds

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

추출을 선택하십시오 (Time '17 : 12 : 28.5 '에서 밀리 초);와이즈 토토 :28500.000
Minute

분 필드 (0–59)

추출을 선택하십시오 (Timestamp '2001-02-16 20:38:40');와이즈 토토 :38
Month

연도 내 월 수 (1-12); 을 위한간격값, Modulo 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
Second

분수 초를 포함한 초 필드

추출을 선택하십시오 (Timestamp '2001-02-16 20:38:40');와이즈 토토 :40.000000추출을 선택하십시오 (Time From '17 : 12 : 28.5 ');와이즈 토토 :28.500000
타임 존

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

Timezone_hour

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

Timezone_Minute

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

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

ISO 주중 번호 시스템에서 1 월 초반 날짜는 전년도 52 주 또는 53 주에 일부가 될 수 있으며 12 월 후반 날짜는 내년 첫 주의 일부가 될 수 있습니다. 예를 들어,2005-01-012004 년 53 주차의 일부이며2006-01-012005 년 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

처리 할 때간격값,추출물함수는 간격 출력 함수에 의해 사용되는 해석과 일치하는 필드 값을 생성합니다. 예를 들어 비정형 간격 표현으로 시작하면 놀라운 결과를 얻을 수 있습니다.

간격 '80 분 '; 선택와이즈 토토 :01:20:00추출을 선택하십시오 (간격 '80 분 ');와이즈 토토 :20

Note

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

theExtract함수는 주로 계산 처리를위한 것입니다. 표시의 날짜/시간 값 서식은 참조PostgreSQL : 문서 : 16 : 9.8. 데이터 유형 스포츠 토토 와이즈 토토 스포츠 토토 와이즈 토토 기능.

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

date_part ( '필드',소스)

여기서필드매개 변수는 이름이 아닌 문자열 값이어야합니다. 유효한 필드 이름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_zone])

소스유형의 값 표현식입니다타임 스탬프, 시간대가있는 타임 스탬프또는간격. (유형의 값날짜andTime자동으로 캐스트됩니다타임 스탬프또는간격각각.)필드입력 값을 잘라낼 정밀도를 선택합니다. 반환 값은 마찬가지로 유형입니다.타임 스탬프, 시간대가있는 타임 스탬프또는간격, 그리고 선택한 하나의 세트보다 덜 중요하지 않은 모든 필드가 0으로 (또는 요일 및 월).

유효한 값필드are :

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

입력 값이 유형 인 경우시간대가있는 타임 스탬프, 절단은 특정 시간 구역과 관련하여 수행된다. 예를 들어, 잘린day해당 구역에서 자정 인 값을 생성합니다. 기본적으로 잘린 것은 전류와 관련하여 수행됩니다TimeZone설정, 그러나 선택 사항time_zone다른 시간대를 지정하기 위해 인수를 제공 할 수 있습니다. 시간대 이름은에 설명 된 모든 방법으로 지정할 수 있습니다.섹션 8.5.3.

처리 할 때 시간대를 지정할 수 없습니다시간대가없는 타임 스탬프또는간격입력. 이들은 항상 액면가로 취합니다.

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

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:00date_trunc ( 'day', 시간대가있는 타임 스탬프 '2001-02-16 20 : 38 : 40+00'); 선택와이즈 토토 :2001-02-16 00:00:00-05date_trunc ( 'day', 시간대가있는 타임 스탬프 '2001-02-16 20 : 40+00', 'Australia/Sydney');;와이즈 토토 :2001-02-16 08:00:00-05date_trunc ( '시간', 간격 '3 일 02:47:33'); 선택와이즈 토토 :3 일 02:00:00

9.9.3. date_bin #

함수date_bin bins지정된 구간으로의 입력 타임 스탬프 (스트라이드) 지정된 원점과 정렬되었습니다.

date_bin (스트라이드, 소스, 원산지)

소스유형의 값 표현식입니다타임 스탬프또는시간대가있는 타임 스탬프. (유형의 값날짜자동으로 캐스트됩니다타임 스탬프.)스트라이드유형의 값 표현식입니다간격. 반환 값은 마찬가지로 유형입니다.타임 스탬프또는시간대가있는 타임 스탬프소스배치.

예 :

date_bin ('15 분 ', 타임 스탬프'2020-02-11 15:44:17 ', 타임 스탬프'2001-01-01 ');;와이즈 토토 :2020-02-11 15:30:00date_bin ('15 분 ', 타임 스탬프'2020-02-11 15:44:17 ', 타임 스탬프'2001-01-01 00:02:30 ');;와이즈 토토 :2020-02-11 15:32:30

전체 장치 (1 분, 1 시간 등)의 경우 유사한 결과와 동일한 결과를 제공합니다date_trunc전화를 걸지만 차이점은입니다.date_bin임의의 간격으로 잘릴 수 있습니다.

the스트라이드간격은 0보다 크고 월 이상의 단위를 포함 할 수 없어야합니다.

9.9.4. at 타임 존 #

the와이즈 토토에서운영자 변환 타임 스탬프없음타임 영역으로/시간 스탬프with시간대 및와이즈 토토가있는 시간다른 시간대에 대한 값.표 9.34변형을 보여줍니다.

표 9.34. 와이즈 토토에서변형

운영자

설명

예제

시간대가없는 타임 스탬프 at Time Zone Zone시간대가있는 타임 스탬프

주어진 타임 스탬프 변환없음와이즈 토토에서 타임 스탬프with주어진 값이 지정된 시간대에 있다고 가정하면 시간대

Timestamp '2001-02-16 20:38:40'At Time Zone 'America/Denver'2001-02-17 03 : 38 : 40+00

시간대가있는 타임 스탬프 at 타임 존 Zone시간대가없는 타임 스탬프

주어진 타임 스탬프 변환with와이즈 토토에서 타임 스탬프없음해당 구역에 시간이 나타날 때 시간대

시간대가있는 타임 스탬프 '2001-02-16 20 : 38 : 40-05'at Time Zone 'America/Denver'2001-02-16 18:38:40

와이즈 토토가있는 시간 at Time Zone Zone와이즈 토토가있는 시간

주어진 시간 변환with새로운 시간대로의 시간대. 날짜가 제공되지 않으므로 이름이 지정된 대상 영역에 대한 현재 활성 UTC 오프셋을 사용합니다.

와이즈 토토가있는 시간 '05 : 34 : 17-05 '에서 시간대'UTC '10 : 34 : 17+00


이 표현에서 원하는 시간대Zone텍스트 값으로 지정할 수 있습니다 (예 :'America/Los_angeles') 또는 간격으로 (예 :간격 '-08 : 00'). 텍스트의 경우, 시간대 이름은에 설명 된 모든 방법으로 지정할 수 있습니다.섹션 8.5.3. 간격 케이스는 UTC에서 오프셋이 고정 된 영역에만 유용하므로 실제로는 일반적이지 않습니다.

예제 (현재를 가정TimeZone설정은America/Los_angeles) :

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

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

함수TimeZone(Zone, 타임 스탬프)SQL-Conforming Construct와 동일합니다타임 스탬프와이즈 토토에서Zone.

9.9.5. 현재 날짜/시간#

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; 선택와이즈 토토 :2019-12-23current_timestamp; 선택와이즈 토토 :2019-12-23 14:39:53.662522-05current_timestamp (2); 선택와이즈 토토 :2019-12-23 14:39:53.66-05LocalTimestamp를 선택하십시오.와이즈 토토 :2019-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현재 날짜와 시간을 지정하려면 (다시, 트랜잭션 시작 시간으로 해석). 따라서 다음 세 가지 모두 동일한 결과를 반환합니다.

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

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

9.9.6. 실행 지연#

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

pg_sleep (이중 정밀도)
pg_sleep_for (간격)
pg_sleep_until (시간대가있는 타임 스탬프)

PG_SLEEP주어진 초 수가 경과 할 때까지 현재 세션의 프로세스를 잠들게합니다. 분수 초 지연을 지정할 수 있습니다.PG_SLEEP_FOR수면 시간을 A로 지정할 수 있도록 편의 기능입니다.간격. pg_sleep_until는 특정 모닝 시간이 필요한 경우 편의 기능입니다. 예를 들어:

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

Note

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

경고

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

정정 제출

올바른 문서에 아무것도 표시되면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면