이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
다음에 대한 동일한 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 9.9. 날짜/와이즈 토토 기능 및 운영자버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

9.9. 사설 토토/시간 함수 및 연산자

표 9.30사설 토토/시간 값 처리에 사용할 수 있는 함수를 표시하며 자세한 내용은 다음 하위 섹션에 나와 있습니다.표 9.29기본 산술 연산자의 동작을 설명합니다(+, *등). 서식 지정 기능은 다음을 참조하세요.PostgreSQL : 문서 : 10 : 9.8. 데이터 유형 토토 핫 토토 핫 기능. 의 사설 토토/시간 데이터 유형에 대한 배경 정보를 잘 알고 있어야 합니다.PostgreSQL : 문서 : 10 : 8.5. 날짜/메이저 토토 사이트 유형.

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

아래에 설명된 모든 함수와 연산자는 다음을 수행합니다.시간또는타임스탬프입력은 실제로 두 가지 변형으로 제공됩니다. 하나는 소요됩니다.시간대 포함 시간또는시간대가 포함된 타임스탬프그리고 걸리는 것시간대가 없는 시간또는시간대가 없는 타임스탬프. 간결성을 위해 이러한 변형은 별도로 표시되지 않습니다. 또한,+그리고*연산자는 교환 가능한 쌍으로 제공됩니다(예: 사설 토토 + 정수 및 정수 + 사설 토토 모두). 우리는 각 쌍 중 하나만 표시합니다.

표 9.29. 사설 토토/시간 연산자

운영자 결과
+ 사설 토토 '2001-09-28' + 정수 '7' 사설 토토 '2001-10-05'
+ 사설 토토 '2001-09-28' + 간격 '1시간' 타임스탬프 '2001-09-28 01:00:00'
+ 사설 토토 '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'
+ 시간 '01:00' + 간격 '3시간' 시간 '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'
- 시간 '05:00' - 시간 '03:00' 간격 '02:00:00'
- 시간 '05:00' - 간격 '2시간' 시간 '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' - 타임스탬프 '2001-09-27 12:00' 간격 '1일 15:00:00'
* 900 * 간격 '1초' 간격 '00:15:00'
* 21 * 간격 '1일' 간격 '21일'
* 배정밀도 '3.5' * 간격 '1시간' 간격 '03:30:00'
/ 간격 '1시간' / 배정밀도 '1.5' 간격 '00:40:00'

표 9.30. 사설 토토/시간 함수

기능 반환 유형 설명 결과
나이(타임스탬프, 타임스탬프) 간격 인수를 빼서 a를 생성상징적단순한 일이 아닌 연도와 월을 사용한 결과 age(타임스탬프 '2001-04-10', 타임스탬프 '1957-06-13') 43년 9월 27일
나이(타임스탬프) 간격 다음에서 빼기현재_사설 토토(자정) 나이(타임스탬프 '1957-06-13') 43년 8개월 3일
시계_타임스탬프() 시간대가 포함된 타임스탬프 현재 사설 토토 및 시간(문 실행 중 변경); 참조섹션 9.9.4
현재_사설 토토 사설 토토 현재 사설 토토; 참조섹션 9.9.4
현재_시간 시간대 포함 시간 현재 시간; 참조섹션 9.9.4
현재_타임스탬프 시간대가 포함된 타임스탬프 현재 사설 토토 및 시간(현재 거래 시작); 참조섹션 9.9.4
date_part(텍스트, 타임스탬프) 배정밀도 하위 필드 가져오기(동등함추출); 참조섹션 9.9.1 date_part('시간', 타임스탬프 '2001-02-16 20:38:40') 20
date_part(텍스트, 간격) 배정밀도 하위 필드 가져오기(동등함추출); 참조섹션 9.9.1 date_part('월', 간격 '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
추출(필드from타임스탬프) 배정밀도 하위 필드 가져오기; 참조섹션 9.9.1 추출(타임스탬프 '2001-02-16 20:38:40'의 시간) 20
추출(필드from간격) 배정밀도 하위 필드 가져오기; 참조섹션 9.9.1 추출('2년 3개월' 간격의 월) 3
무한(사설 토토) 부울 유한 사설 토토 테스트(+/-무한대 아님) isfinite(사설 토토 '2001-02-16') 사실
무한(타임스탬프) 부울 유한한 타임 스탬프 테스트(+/-무한대 아님) isfinite(타임스탬프 '2001-02-16 21:28:30')
무한(간격) 부울 유한 간격 테스트 무한(간격 '4시간') 사실
justify_days(간격) 간격 30일 기간이 월로 표시되도록 간격을 조정 justify_days(간격 '35일') 1월 5일
justify_hours(간격) 간격 24시간 기간이 일로 표시되도록 간격을 조정 justify_hours(간격 '27시간') 1일 03:00:00
justify_interval(간격) 간격 다음을 사용하여 간격 조정justify_days그리고justify_hours, 추가 부호 조정 포함 justify_interval(간격 '1개월 -1시간') 29일 23:00:00
현지시간 시간 현재 시간; 참조섹션 9.9.4
localtimestamp 타임스탬프 현재 사설 토토 및 시간(현재 거래 시작); 참조섹션 9.9.4
make_date( int, int, int) 사설 토토 연도, 월, 일 필드에서 사설 토토 생성 make_date(2013, 7, 15) 2013-07-15
make_interval( int기본값 0,개월 int기본값 0, int기본값 0, int기본값 0,시간 int기본값 0, int기본값 0, 배정밀도기본값 0.0) 간격 년, 월, 주, 일, 시, 분, 초 필드에서 간격 생성 make_interval(일 = 10) 10일
make_time(시간 int, int, 배정밀도) 시간 시, 분, 초 필드에서 시간 생성 make_time(8, 15, 23.5) 08:15:23.5
make_timestamp( int, int, int, 시간 int, int, 배정밀도) 타임스탬프 연도, 월, 일, 시, 분, 초 필드에서 타임스탬프 생성 make_timestamp(2013, 7, 15, 8, 15, 23.5) 2013-07-15 08:15:23.5
make_timestamptz( int, int, int, 시간 int, int, 배정밀도, [ 시간대 텍스트 ]) 시간대가 포함된 타임스탬프 연도, 월, 일, 시, 분, 초 필드의 시간대가 포함된 타임스탬프를 생성합니다. 만일시간대지정되지 않았으며 현재 시간대가 사용됩니다. make_timestamptz(2013, 7, 15, 8, 15, 23.5) 2013-07-15 08:15:23.5+01
지금() 시간대가 포함된 타임스탬프 현재 사설 토토 및 시간(현재 거래 시작); 참조섹션 9.9.4
statement_timestamp() 시간대가 포함된 타임스탬프 현재 사설 토토 및 시간(현재 명령문의 시작); 참조섹션 9.9.4
timeofday() 텍스트 현재 사설 토토 및 시간(예:시계_타임스탬프하지만텍스트문자열); 참조섹션 9.9.4
transaction_timestamp() 시간대가 포함된 타임스탬프 현재 사설 토토 및 시간(현재 거래 시작); 참조섹션 9.9.4
to_timestamp(배정밀도) 시간대가 포함된 타임스탬프 Unix 시대(1970-01-01 00:00:00+00 이후의 초)를 타임스탬프로 변환 to_timestamp(1284352323) 2010-09-13 04:32:03+00

이러한 기능 외에도 SQL겹침연산자가 지원됩니다:

(시작1, end1) 중복(시작2, end2)
(시작1, 길이1) 중복(시작2, 길이2)

이 표현식은 두 기간(종료점에 의해 정의됨)이 겹치면 참이 되고, 겹치지 않으면 거짓이 됩니다. 엔드포인트는 사설 토토, 시간 또는 타임스탬프 쌍으로 지정할 수 있습니다. 또는 사설 토토, 시간 또는 타임스탬프 뒤에 간격이 오는 형태로 표시됩니다. 한 쌍의 값이 제공되면 시작 또는 끝이 먼저 기록될 수 있습니다.겹침자동으로 쌍의 이전 값을 시작으로 사용합니다. 각 기간은 반 개방 간격을 나타내는 것으로 간주됩니다.시작 <= 시간 < , 그렇지 않은 경우시작그리고동일한 경우 해당 단일 순간을 나타냅니다. 이는 예를 들어 공통 엔드포인트만 있는 두 기간이 겹치지 않음을 의미합니다.

선택 (사설 토토 '2001-02-16', 사설 토토 '2001-12-21') 겹침
       (사설 토토 '2001-10-30', 사설 토토 '2002-10-30');결과:선택(사설 토토 '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');결과:

추가할 때간격값을 (또는 빼기간격값) a시간대가 포함된 타임스탬프값, 일 구성요소는 사설 토토를 앞당기거나 줄입니다.시간대가 포함된 타임스탬프표시된 일수만큼 시간을 동일하게 유지합니다. 일광 절약 시간제 변경 시(세션 시간대가 DST를 인식하는 시간대로 설정된 경우) 이는 다음을 의미합니다.간격 '1일'반드시 같지는 않음간격 '24시간'. 예를 들어 세션 시간대가미국/덴버:

시간대 '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시간대미국/덴버.

다음 내용에는 모호함이 있을 수 있습니다.개월에서 반환한 필드나이달마다 일수가 다르기 때문입니다.PostgreSQL의 접근 방식은 부분 월을 계산할 때 두 사설 토토 중 빠른 사설 토토의 월을 사용합니다. 예를 들어,나이('2004-06-01', '2004-04-30')4월을 사용하여 산출합니다1월 1일, May를 사용하면 결과가 나옵니다1월 2일5월은 31일인 반면 4월은 30일밖에 없기 때문입니다.

사설 토토와 타임스탬프를 빼는 것도 복잡할 수 있습니다. 뺄셈을 수행하는 개념적으로 간단한 방법 중 하나는 다음을 사용하여 각 값을 초 수로 변환하는 것입니다.추출(EPOCH FROM ...), 그런 다음 결과를 뺍니다. 이것은 수를 생성합니다두 값 사이. 이는 매월 일수, 시간대 변경 및 일광 절약 시간 조정을 조정합니다. 를 사용하여 사설 토토 또는 타임스탬프 값 빼기-연산자는 일수(24시간)와 값 사이의 시간/분/초를 반환하여 동일한 조정을 수행합니다.나이함수는 필드별 뺄셈을 수행한 다음 음수 필드 값을 조정하여 연도, 월, 일 및 시/분/초를 반환합니다. 다음 쿼리는 이러한 접근 방식의 차이점을 보여줍니다. 샘플 결과는시간대 = '미국/동부'; 사용된 두 사설 토토 사이에 일광 절약 시간제 변경이 있습니다.

추출 선택(EPOCH FROM 타임스탬프tz '2013-07-01 12:00:00') -
       EXTRACT(timestamptz '2013-03-01 12:00:00'의 EPOCH);결과:10537200SELECT (EXTRACT(EPOCH FROM 타임스탬프tz '2013-07-01 12:00:00') -
        추출(타임스탬프tz '2013-03-01 12:00:00'의 EPOCH))
        / 60 / 60 / 24;결과:121.958333333333SELECT 타임스탬프tz '2013-07-01 12:00:00' - 타임스탬프tz '2013-03-01 12:00:00';결과:121일 23:00:00SELECT age(timestamptz '2013-07-01 12:00:00', timestamptz '2013-03-01 12:00:00');결과:4개월

9.9.1. 추출, date_part

추출(필드발신출처)

추출함수는 사설 토토/시간 값에서 연도 또는 시간과 같은 하위 필드를 검색합니다.출처유형의 값 표현식이어야 합니다.타임스탬프, 시간또는간격. (유형의 표현사설 토토다음으로 전송됨타임스탬프따라서 사용할 수도 있습니다.)필드은 소스 값에서 추출할 필드를 선택하는 식별자 또는 문자열입니다.추출함수는 유형의 값을 반환합니다.배정밀도. 다음은 유효한 필드 이름입니다.

세기

세기

추출 선택(타임스탬프 '2000-12-16 12:21:13'의 세기);결과:20추출 선택(타임스탬프 '2001-02-16 20:38:40'의 세기);결과:21

1세기는 서기 0001-01-01 00:00:00에 시작됩니다. 비록 당시 그들은 그것을 몰랐지만. 이 정의는 모든 그레고리력 국가에 적용됩니다. 0번째 세기는 없습니다. -1세기에서 1세기로 이동합니다. 이에 동의하지 않으시면 항의서를 다음 주소로 보내주십시오: Pope, Cathedral Saint-Peter of Roma, Vatican.

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

추출물 선택(타임스탬프 '2001-02-16 20:38:40'의 사설 토토);결과:16추출 선택(간격 '40일 1분'의 사설 토토);결과:40
10년

연도 필드를 10으로 나눈 값

추출 선택(타임스탬프 '2001-02-16 20:38:40'에서 10년 후);결과:200
다우

요일은 일요일입니다(0) ~ 토요일(6)

추출 선택(타임스탬프에서 다우 '2001-02-16 20:38:40');결과:5

참고추출의 요일 번호 매기기가 해당의 요일 번호와 다릅니다.to_char(..., 'D')함수.

도이

연중일(1 - 365/366)

추출 선택(타임스탬프에서 DOY '2001-02-16 20:38:40');결과:47
에포크

시간대가 포함된 타임스탬프값, 1970-01-01 00:00:00 UTC 이후의 초 수(그 이전 타임스탬프의 경우 음수); 에 대한사설 토토그리고타임스탬프값, 시간대 또는 일광 절약 시간 규칙에 관계없이 1970-01-01 00:00:00 이후 명목상 초 수입니다. 에 대한간격값, 간격의 총 초 수

추출 선택(시간대가 '2001-02-16 20:38:40.12-08'인 타임스탬프의 에포크);결과:982384720.12추출 선택(타임스탬프 '2001-02-16 20:38:40.12'의 에포크);결과:982355920.12추출 선택('5일 3시간' 간격의 에포크);결과:442800

에포크 값을 다시 a로 변환할 수 있습니다.시간대가 포함된 타임스탬프to_timestamp:

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

신청 시 주의하세요to_timestampa에서 추출된 시대로사설 토토또는타임스탬프값은 오해의 소지가 있는 결과를 생성할 수 있습니다. 결과는 원래 값이 UTC로 제공되었다고 효과적으로 가정하지만 그렇지 않을 수도 있습니다.

시간

시간 필드(0 - 23)

추출물 선택(타임스탬프 '2001-02-16 20:38:40'으로부터의 시간);결과:20
isodow

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

추출 선택(타임스탬프의 ISODOW '2001-02-18 20:38:40');결과:7

이것은 다음과 동일합니다다우일요일 제외. 이는 다음과 일치합니다.ISO8601 요일 번호 매기기.

isoyear

ISO8601 사설 토토가 속하는 주 번호 연도(간격에는 적용되지 않음)

추출 선택('2006-01-01' 사설 토토의 ISO 연도);결과:2005추출 선택(사설 토토 '2006-01-02'의 ISO연도);결과:2006

각각ISO8601 주 번호 지정 연도는 1월 4일이 포함된 주의 월요일로 시작하므로 1월 초 또는 12월 말에ISO연도는 그레고리오력과 다를 수 있습니다. 참조자세한 내용은 필드를 참조하세요.

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

줄리안

줄리안 데이트사설 토토 또는 타임스탬프에 해당(간격에는 적용되지 않음). 현지 자정이 아닌 타임스탬프는 분수 값으로 나타납니다. 참조섹션 B.7더 많은 정보를 원하시면.

추출 선택(사설 토토 '2006-01-01'의 JULIAN);결과:2453737추출 선택(타임스탬프 '2006-01-01 12:00'에서 JULIAN);결과:2453737.5
마이크로초

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

추출 선택('17:12:28.5' 시간부터 밀리초);결과:28500000
밀레니엄

밀레니엄

추출 선택(타임스탬프 '2001-02-16 20:38:40'에서 밀레니엄');결과:3

1900년대는 두 번째 천년기에 속합니다. 세 번째 밀레니엄은 2001년 1월 1일에 시작되었습니다.

밀리초

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

추출 선택('17:12:28.5' 시간부터 밀리초);결과:28500

분 필드(0 - 59)

추출 선택(타임스탬프 '2001-02-16 20:38:40'에서 1분 후);결과:38

타임스탬프값, 해당 연도 내의 월 수(1 - 12) ; 에 대한간격값, 개월 수, 모듈로 12(0 - 11)

추출 선택(타임스탬프 '2001-02-16 20:38:40'의 월);결과:2추출 선택('2년 3개월' 간격의 월);결과:3추출 선택('2년 13개월' 간격의 월);결과:1
분기

사설 토토가 속한 연도의 분기(1 - 4)

추출 선택(타임스탬프 '2001-02-16 20:38:40'의 분기);결과:1

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

추출 선택(타임스탬프 '2001-02-16 20:38:40'에서 두 번째);결과:40추출 선택('17:12:28.5' 시간으로부터 두 번째);결과:28.5
시간대

UTC로부터의 시간대 오프셋으로, 초 단위로 측정됩니다. 양수 값은 UTC 동쪽 시간대에 해당하고, 음수 값은 UTC 서쪽 시간대에 해당합니다. (기술적으로는,PostgreSQL윤초는 처리되지 않으므로 UTC를 사용하지 않습니다.)

timezone_hour

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

timezone_min

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

ISO8601주-연도의 주입니다. 정의에 따르면 ISO 주는 월요일에 시작되며, 연도의 첫 번째 주는 해당 연도의 1월 4일을 포함합니다. 즉, 한 해의 첫 번째 목요일은 해당 연도의 1주차에 속합니다.

ISO 주 번호 지정 시스템에서는 1월 초 사설 토토가 전년도의 52번째 또는 53번째 주에 포함될 수 있고, 12월 말 사설 토토가 다음 연도의 첫 번째 주에 포함될 수 있습니다. 예를 들어,2005-01-012004년 53번째 주의 일부이고2006-01-012005년 52번째 주의 일부입니다.2012-12-312013년 첫 주의 일부입니다. 다음을 사용하는 것이 좋습니다.isoyear필드와 함께일관된 결과를 얻으려면.

추출 선택(타임스탬프 '2001-02-16 20:38:40'의 주);결과:7

연도 필드입니다. 없다는 점을 명심하세요.0 AD그러므로 빼기BC년부터AD몇 년은 조심해서 보내야 합니다.

추출 선택(타임스탬프 '2001-02-16 20:38:40'의 연도);결과:2001

참고

입력값이 +/-무한대일 때,추출단조 증가 필드에 대해 +/-무한대를 반환합니다. (에포크, 줄리안, , isoyear, 십년, 세기밀레니엄). 다른 필드의 경우 NULL이 반환됩니다.포스트그레SQL9.6 이전 버전은 모든 무한 입력 사례에 대해 0을 반환했습니다.

추출함수는 주로 계산 처리를 위한 것입니다. 표시할 사설 토토/시간 값의 형식을 지정하려면 다음을 참조하세요.PostgreSQL : 문서 : 10 : 9.8. 데이터 유형 토토 핫 토토 핫 기능.

date_part함수는 기존 함수를 모델로 합니다.앵그르에 해당SQL-표준 함수추출:

date_part('필드', 출처)

여기에 주의하세요필드매개변수는 이름이 아닌 문자열 값이어야 합니다. 에 대한 유효한 필드 이름date_part다음과 동일합니다추출.

SELECT 사설 토토_부분('일', TIMESTAMP '2001-02-16 20:38:40');결과:16SELECT date_part('시간', INTERVAL '4시간 3분');결과:4

9.9.2. date_trunc

함수date_trunc개념적으로 다음과 유사합니다.트렁크숫자에 대한 함수입니다.

date_trunc('필드', 출처)

출처유형의 값 표현식입니다.타임스탬프또는간격. (유형 값사설 토토그리고시간다음으로 자동 전송됩니다.타임스탬프또는간격각각.)필드입력 값을 자를 정밀도를 선택합니다. 반환 값은 다음 유형입니다.타임스탬프또는간격선택한 필드보다 중요하지 않은 모든 필드는 0(또는 일과 월의 경우 1)으로 설정됩니다.

유효한 값필드다음은:

마이크로초
밀리초
시간
분기
10년
세기
밀레니엄

예:

SELECT date_trunc('시간', TIMESTAMP '2001-02-16 20:38:40');결과:2001-02-16 20:00:00SELECT date_trunc('연도', TIMESTAMP '2001-02-16 20:38:40');결과:2001-01-01 00:00:00

9.9.3. 시간대

시간대타임스탬프를 변환합니다시간대 없음타임스탬프에서/까지시간대 포함시간값을 다른 시간대에 적용합니다.표 9.31변종을 보여줍니다.

표 9.31. 시간대변형

표현 반환 유형 설명
시간대가 없는 타임스탬프시간대영역 시간대가 포함된 타임스탬프 주어진 타임스탬프 처리시간대 없음지정된 시간대에 위치함
시간대가 포함된 타임스탬프시간대영역 시간대가 없는 타임스탬프 주어진 타임 스탬프를 변환시간대 포함시간대 지정 없이 새 시간대로
시간대 포함 시간시간대에영역 시간대 포함 시간 주어진 시간을 변환시간대 포함새 시간대로

이 표현식에서는 원하는 시간대영역텍스트 문자열(예:'미국/로스앤젤레스') 또는 간격으로(예:간격 '-08:00'). 텍스트의 경우 시간대 이름은 다음에 설명된 방법 중 하나로 지정할 수 있습니다.섹션 8.5.3.

예(현지 시간대가 다음과 같다고 가정)미국/Los_Angeles):

시간대 'America/Denver'에서 타임스탬프 '2001-02-16 20:38:40' 선택;결과:2001-02-16 19:38:40-08'America/Denver' 시간대에서 '2001-02-16 20:38:40-05' 시간대를 사용하여 타임스탬프 선택;결과:2001-02-16 18:38:40타임스탬프 '2001-02-16 20:38:40-05' AT 타임존 '아시아/도쿄' AT 타임존 '아메리카/시카고';결과:2001-02-16 05:38:40

첫 번째 예에서는 시간대가 부족한 값에 시간대를 추가하고 현재 값을 사용하여 값을 표시합니다.시간대설정. 두 번째 예에서는 시간대 값이 포함된 타임스탬프를 지정된 시간대로 이동하고 시간대가 없는 값을 반환합니다. 이를 통해 현재와 다른 값을 저장하고 표시할 수 있습니다.시간대설정. 세 번째 예에서는 도쿄 시간을 시카고 시간으로 변환합니다. 변환 중시간다른 시간대에 대한 값은 사설 토토가 제공되지 않았기 때문에 현재 활성화된 시간대 규칙을 사용합니다.

함수시간대(영역, 타임스탬프)SQL 준수 구문과 동일합니다.타임스탬프시간대영역.

9.9.4. 현재 사설 토토/시간

PostgreSQL은 현재 사설 토토 및 시간과 관련된 값을 반환하는 다양한 함수를 제공합니다. 이러한 SQL 표준 함수는 모두 현재 트랜잭션의 시작 시간을 기준으로 값을 반환합니다.

CURRENT_DATE
CURRENT_TIME
CURRENT_TIMESTAMP
CURRENT_TIME(정밀도)
CURRENT_TIMESTAMP(정밀도)
현지 시간
현지타임스탬프
현지시간(정밀도)
현지타임스탬프(정밀도)

CURRENT_TIME그리고CURRENT_TIMESTAMP시간대로 값을 전달합니다.현지 시간그리고LOCALTIMESTAMP시간대 없이 값을 전달합니다.

CURRENT_TIME, CURRENT_TIMESTAMP, 현지시간LOCALTIMESTAMP은 선택적으로 정밀도 매개변수를 취할 수 있으며, 이로 인해 결과는 초 필드에서 해당 소수 자릿수로 반올림됩니다. 정밀도 매개변수가 없으면 결과는 사용 가능한 전체 정밀도로 제공됩니다.

일부 예:

현재_시간 선택;결과:14:39:53.662522-05현재_사설 토토 선택;결과:2001-12-23현재_TIMESTAMP 선택;결과:2001-12-23 14:39:53.662522-05CURRENT_TIMESTAMP(2) 선택;결과:2001-12-23 14:39:53.66-05현지 타임스탬프 선택;결과:2001-12-23 14:39:53.662522

이 함수는 현재 트랜잭션의 시작 시간을 반환하므로 해당 값은 트랜잭션 중에 변경되지 않습니다. 이는 기능으로 간주됩니다. 단일 트랜잭션이 일관된 개념을 가질 수 있도록 하는 것이 목적입니다.현재시간, 동일한 트랜잭션 내의 여러 수정 사항이 동일한 타임스탬프를 갖도록 합니다.

참고

다른 데이터베이스 시스템에서는 이러한 값을 더 자주 높일 수 있습니다.

포스트그레SQL또한 현재 명령문의 시작 시간과 함수가 호출되는 순간의 실제 현재 시간을 반환하는 함수를 제공합니다. 비SQL 표준 시간 함수의 전체 목록은 다음과 같습니다.

transaction_timestamp()
문_타임스탬프()
시계_타임스탬프()
시간()
지금()

transaction_timestamp()다음과 동일함CURRENT_TIMESTAMP, 그러나 반환되는 내용을 명확하게 반영하기 위해 이름이 지정되었습니다.statement_timestamp()현재 명령문의 시작 시간(구체적으로는 클라이언트로부터 최신 명령 메시지를 받은 시간)을 반환합니다.statement_timestamp()그리고transaction_timestamp()트랜잭션의 첫 번째 명령 중에는 동일한 값을 반환하지만 후속 명령에서는 다를 수 있습니다.시계_타임스탬프()실제 현재 시간을 반환하므로 단일 SQL 명령 내에서도 값이 변경됩니다.timeofday()역사적입니다PostgreSQL함수. 좋아요시계_타임스탬프(), 실제 현재 시간을 반환하지만 형식이 지정된 형식으로 반환됩니다.텍스트a가 아닌 문자열시간대가 포함된 타임스탬프값.지금()전통적인 것입니다포스트그레SQL동등함transaction_timestamp().

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

현재_TIMESTAMP 선택;
지금 선택();
타임스탬프 '지금' 선택;  -- 아래 팁을 참조하세요.

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

9.9.5. 실행 지연

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

pg_sleep()
pg_sleep_for(간격)
pg_sleep_until(시간대가 포함된 타임스탬프)

pg_sleep다음까지 현재 세션의 프로세스를 휴면 상태로 만듭니다.초가 경과했습니다.유형의 값입니다배정밀도, 따라서 소수점 이하의 지연을 지정할 수 있습니다.pg_sleep_for은(는) 다음과 같이 지정된 긴 수면 시간을 위한 편의 함수입니다.간격. pg_sleep_until은 특정 기상 시간을 원할 때 사용하는 편의 기능입니다. 예를 들면:

SELECT pg_sleep(1.5);
SELECT pg_sleep_for('5분');
SELECT pg_sleep_until('내일 03:00');

참고

휴면 간격의 효과적인 해결은 플랫폼에 따라 다릅니다. 0.01초가 일반적인 값입니다. 수면 지연은 최소한 지정된 기간만큼 길어집니다. 서버 부하 등의 요인에 따라 더 길어질 수도 있습니다. 특히,pg_sleep_until지정된 시간에 정확히 깨어날 수는 없지만 더 일찍 깨어나지는 않습니다.

경고

호출 시 세션이 필요 이상으로 많은 잠금을 보유하지 않는지 확인하세요pg_sleep또는 그 변형. 그렇지 않으면 다른 세션에서 수면 프로세스를 기다려야 하여 전체 시스템 속도가 느려질 수 있습니다.



[7]60 윤초가 운영 체제에 의해 구현된 경우