표 9.33날짜/시간 값 처리에 사용할 수 있는 기능을 표시하며 자세한 내용은 다음 하위 섹션에 나와 있습니다.표 9.32기본 산술 연산자의 동작을 설명합니다(+, *등). 서식 지정 기능은 다음을 참조하세요.PostgreSQL : 문서 : 17 : 9.8. 데이터 유형 토토 사이트 토토 사이트 기능. 의 날짜/시간 데이터 유형에 대한 배경 정보를 잘 알고 있어야 합니다.PostgreSQL : 문서 : 17 : 8.5. 날짜/사설 토토 유형.
또한, 다음에 표시된 일반적인 비교 연산자는표 9.1날짜/시간 유형에 사용할 수 있습니다. 날짜 및 타임스탬프(시간대 포함 또는 제외)는 모두 비교할 수 있는 반면, 시간(시간대 포함 또는 제외) 및 간격은 동일한 데이터 유형의 다른 값과만 비교할 수 있습니다. 시간대가 없는 타임스탬프와 시간대가 있는 타임스탬프를 비교할 때 전자 값은 다음에서 지정한 시간대에 제공되는 것으로 가정됩니다.시간대구성 매개변수이며 후자 값(내부적으로 이미 UTC임)과의 비교를 위해 UTC로 회전됩니다. 마찬가지로 날짜 값은 자정을 나타내는 것으로 가정됩니다.시간대타임스탬프와 비교할 때 영역.
아래에 설명된 모든 함수와 연산자는 다음을 수행합니다.시간또는타임스탬프입력은 실제로 두 가지 변형으로 제공됩니다. 하나는 소요됩니다.시간대 포함 시간또는시간대가 포함된 타임스탬프, 그리고 걸리는 것시간대가 없는 시간또는시간대 없는 타임스탬프. 간결성을 위해 이러한 변형은 별도로 표시되지 않습니다. 또한,+그리고*연산자는 교환 가능한 쌍으로 제공됩니다(예: 둘 다날짜 + 정수그리고정수 + 날짜); 우리는 각 쌍 중 하나만 표시합니다.
표 9.32. 날짜/시간 연산자
|
운영자 설명 예 |
|---|
|
날짜에 일수 추가
|
|
날짜에 간격 추가
|
|
날짜에 시간 추가
|
|
간격 추가
|
|
타임스탬프에 간격 추가
|
|
시간에 간격 추가
|
|
간격 무효화
|
|
날짜를 빼서 경과된 일수를 산출
|
|
날짜에서 일수 빼기
|
|
날짜에서 간격 빼기
|
|
시간 빼기
|
|
시간에서 간격 빼기
|
|
타임스탬프에서 간격 빼기
|
|
간격 빼기
|
|
타임스탬프 빼기(24시간 간격을 일수로 변환, 유사하게
|
|
간격에 스칼라를 곱함
|
|
간격을 스칼라로 나누기
|
표 9.33. 날짜/시간 함수
|
기능 설명 예제 |
|---|
|
인수를 빼서 a를 생성합니다.“상징적”단순한 일이 아닌 연도와 월을 사용한 와이즈 토토
|
|
다음에서 인수 빼기
|
|
현재 날짜 및 시간(문 실행 중 변경); 보다섹션 9.9.5
|
|
현재 날짜; 보다섹션 9.9.5
|
|
현재 시간; 보다섹션 9.9.5
|
|
현재 시간, 제한된 정밀도. 보다섹션 9.9.5
|
|
현재 날짜 및 시간(현재 거래 시작); 보다섹션 9.9.5
|
|
현재 날짜 및 시간(현재 트랜잭션 시작), 제한된 정밀도. 보다섹션 9.9.5
|
|
추가
|
|
지정된 원점과 정렬된 지정된 간격으로 Bin 입력; 보다섹션 9.9.3
|
|
타임스탬프 하위 필드 가져오기(동등함
|
|
간격 하위 필드 가져오기(다음과 동일)
|
|
빼기
|
|
지정된 정밀도로 자릅니다. 보다섹션 9.9.2
|
|
지정된 시간대에서 지정된 정밀도로 자릅니다. 보다섹션 9.9.2
|
|
지정된 정밀도로 자릅니다. 보다섹션 9.9.2
|
|
타임스탬프 하위 필드 가져오기; 보다섹션 9.9.1
|
|
간격 하위 필드 가져오기; 보다섹션 9.9.1
|
|
유한 날짜 테스트(+/-무한대 아님)
|
|
유한한 타임스탬프 테스트(+/-무한대 아님)
|
|
유한 간격 테스트(+/-무한대가 아님)
|
|
간격을 조정하여 30일 기간을 월로 변환
|
|
간격을 조정하여 24시간 기간을 일수로 변환
|
|
다음을 사용하여 간격 조정
|
|
현재 시간; 보다섹션 9.9.5
|
|
현재 시간, 제한된 정밀도. 보다섹션 9.9.5
|
|
현재 날짜 및 시간(현재 거래 시작); 보다섹션 9.9.5
|
|
현재 날짜 및 시간(현재 거래 시작), 제한된 정밀도. 보다섹션 9.9.5
|
|
연도, 월, 일 필드에서 날짜 생성(음수 연도는 BC를 나타냄)
|
|
연도, 월, 주, 일, 시, 분, 초 필드에서 간격을 생성하며 각 필드의 기본값은 0입니다.
|
|
시, 분, 초 필드에서 시간 생성
|
|
연도, 월, 일, 시, 분, 초 필드에서 타임스탬프 생성(음수 연도는 BC를 나타냄)
|
|
연도, 월, 일, 시, 분, 초 필드의 시간대가 포함된 타임스탬프를 생성합니다(음수 연도는 BC를 나타냄). 만약에
|
|
현재 날짜 및 시간(현재 거래 시작); 보다섹션 9.9.5
|
|
현재 날짜 및 시간(현재 명령문의 시작); 보다섹션 9.9.5
|
|
현재 날짜 및 시간(예:
|
|
현재 날짜 및 시간(현재 거래 시작); 보다섹션 9.9.5
|
|
Unix 시대(1970-01-01 00:00:00+00 이후의 초)를 시간대가 있는 타임스탬프로 변환
|
(시작1,end1) 중복(시작2,end2) (시작1,길이1) 중복(시작2,길이2)
이 표현식은 두 기간(종료점에 의해 정의됨)이 겹칠 때 참이 되고, 겹치지 않으면 거짓이 됩니다. 엔드포인트는 날짜, 시간 또는 타임스탬프 쌍으로 지정할 수 있습니다. 또는 날짜, 시간 또는 타임스탬프 뒤에 간격이 오는 형태로 표시됩니다. 한 쌍의 값이 제공되면 시작 또는 끝이 먼저 기록될 수 있습니다.겹침자동으로 쌍의 이전 값을 시작으로 사용합니다. 각 기간은 반 개방 간격을 나타내는 것으로 간주됩니다.시작 <= 시간 < 끝, 그렇지 않은 경우시작그리고끝동일한 경우 해당 단일 순간을 나타냅니다. 이는 예를 들어 공통 엔드포인트만 있는 두 기간이 겹치지 않음을 의미합니다.
선택 (날짜 '2001-02-16', 날짜 '2001-12-21') 겹침
(날짜 '2001-10-30', 날짜 '2002-10-30');와이즈 토토:참SELECT (날짜 '2001-02-16', 간격 '100일') 겹침
(날짜 '2001-10-30', 날짜 '2002-10-30');와이즈 토토:거짓SELECT (날짜 '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타임스탬프또는시간대가 포함된 타임스탬프값, 월, 일 및 마이크로초 필드간격값이 차례로 처리됩니다. 첫째, 0이 아닌 월 필드는 지정된 월 수만큼 타임스탬프 날짜를 앞당기거나 감소시켜 새 달의 끝을 지나지 않는 한 날짜를 동일하게 유지합니다. 이 경우 해당 월의 마지막 날짜가 사용됩니다. (예를 들어 3월 31일에 1개월을 더하면 4월 30일이 되고, 3월 31일에 2개월을 더하면 5월 31일이 됩니다.) 그런 다음 날짜 필드는 타임스탬프 날짜를 표시된 일 수만큼 앞당기거나 줄입니다. 이 두 단계 모두에서 현지 시간은 동일하게 유지됩니다. 마지막으로 0이 아닌 마이크로초 필드가 있으면 문자 그대로 더하거나 뺍니다. 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시간대미국/덴버.
다음 내용에는 모호함이 있을 수 있습니다.개월다음에 의해 반환된 필드나이월마다 일수가 다르기 때문입니다.포스트그레SQL의 접근 방식은 부분 월을 계산할 때 두 날짜 중 빠른 날짜의 월을 사용합니다. 예를 들어,나이('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);와이즈 토토:10537200.000000SELECT (EXTRACT(EPOCH FROM 타임스탬프tz '2013-07-01 12:00:00') -
추출(타임스탬프tz '2013-03-01 12:00:00'의 EPOCH))
/ 60 / 60 / 24;와이즈 토토:121.9583333333333333SELECT 타임스탬프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개월
추출, 날짜_부분 #추출(필드발신출처)
그추출함수는 날짜/시간 값에서 연도 또는 시간과 같은 하위 필드를 검색합니다.출처유형의 값 표현식이어야 합니다.타임스탬프, 날짜, 시간, 또는간격. (타임스탬프와 시간은 시간대가 있거나 없을 수 있습니다.)필드은 소스 값에서 추출할 필드를 선택하는 식별자 또는 문자열입니다. 모든 필드가 모든 입력 데이터 유형에 유효한 것은 아닙니다. 예를 들어, 하루보다 작은 필드는 a에서 추출할 수 없습니다.날짜, 하루 이상의 필드는 a에서 추출할 수 없습니다.시간. 그만큼추출함수는 유형의 값을 반환합니다.숫자.
다음은 유효한 필드 이름입니다:
세기세기; 을 위한간격값, 연도 필드를 100으로 나눈 값
추출 선택(타임스탬프 '2000-12-16 12:21:13'의 세기);와이즈 토토:20추출 선택(타임스탬프 '2001-02-16 20:38:40'의 세기);와이즈 토토:21추출 선택('0001-01-01 AD'로부터의 세기);와이즈 토토:1추출 선택('0001-12-31 BC'부터 세기);와이즈 토토:-1추출 선택('2001년' 간격의 세기);와이즈 토토:20
일월의 일(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.120000추출 선택(타임스탬프 '2001-02-16 20:38:40.12'의 에포크);와이즈 토토:982355920.120000추출 선택(간격 '5일 3시간'의 에포크);와이즈 토토:442800.000000
에포크 값을 다시 a로 변환할 수 있습니다.시간대가 포함된 타임스탬프와to_timestamp:
SELECT to_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연도는 그레고리오력과 다를 수 있습니다. 참조주자세한 내용은 필드를 참조하세요.
줄리안그줄리안 데이트날짜 또는 타임스탬프에 해당합니다. 현지 자정이 아닌 타임스탬프는 분수 값으로 나타납니다. 보다섹션 B.7자세한 정보는.
추출 선택(날짜 '2006-01-01'의 JULIAN);와이즈 토토:2453737추출 선택(타임스탬프 '2006-01-01 12:00'에서 JULIAN);와이즈 토토:2453737.50000000000000000000
마이크로초소수 부분을 포함한 초 필드에 1 000 000을 곱합니다. 여기에는 전체 초가 포함됩니다.
추출 선택('17:12:28.5' 시간부터 밀리초);와이즈 토토:28500000
밀레니엄천년기; 을 위한간격값, 연도 필드를 1000으로 나눈 값
추출 선택(타임스탬프 '2001-02-16 20:38:40'에서 밀레니엄');와이즈 토토:3추출 선택('2001년' 간격에서 밀레니엄);와이즈 토토:2
1900년대는 두 번째 천년기에 속합니다. 세 번째 밀레니엄은 2001년 1월 1일에 시작되었습니다.
밀리초소수 부분을 포함한 초 필드에 1000을 곱한 값입니다. 여기에는 전체 초가 포함됩니다.
추출 선택('17:12:28.5' 시간부터 밀리초);와이즈 토토:28500.000
분분 필드(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
초소수 초를 포함한 초 필드
추출 선택(타임스탬프 '2001-02-16 20:38:40'에서 두 번째);와이즈 토토:40.000000추출 선택('17:12:28.5' 시간으로부터 두 번째);와이즈 토토:28.500000
시간대UTC로부터의 시간대 오프셋으로, 초 단위로 측정됩니다. 양수 값은 UTC 동쪽 시간대에 해당하고, 음수 값은 UTC 서쪽 시간대에 해당합니다. (기술적으로는,포스트그레SQL윤초는 처리되지 않으므로 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
처리할 때간격값, 그추출함수는 간격 출력 함수에서 사용되는 해석과 일치하는 필드 값을 생성합니다. 정규화되지 않은 간격 표현으로 시작하면 놀라운 결과가 나올 수 있습니다. 예를 들면 다음과 같습니다.
간격 '80분' 선택;와이즈 토토:01:20:00추출물 선택('80분' 간격에서 분);와이즈 토토:20
입력값이 +/-무한대일 때,추출단조 증가 필드에 대해 +/-무한대를 반환합니다(에포크, 줄리안, 년, isoyear, 10년, 세기및밀레니엄for타임스탬프입력;에포크, 시간, 일, 년, 10년, 세기및밀레니엄for간격입력). 다른 필드의 경우 NULL이 반환됩니다.포스트그레SQL9.6 이전 버전은 모든 무한 입력 사례에 대해 0을 반환했습니다.
그추출함수는 주로 계산 처리를 위한 것입니다. 표시할 날짜/시간 값의 형식을 지정하려면 다음을 참조하세요.섹션 9.8.
그날짜_부분함수는 기존 함수를 모델로 합니다.앵그르에 해당SQL-표준 함수추출:
date_part('필드', 출처)
여기에 주의하세요필드매개변수는 이름이 아닌 문자열 값이어야 합니다. 에 대한 유효한 필드 이름날짜_부분다음과 동일합니다추출. 역사적인 이유로,date_part함수는 유형의 값을 반환합니다.배정밀도. 이로 인해 특정 용도에서는 정밀도가 손실될 수 있습니다. 사용추출대신 권장됩니다.
SELECT 날짜_부분('일', TIMESTAMP '2001-02-16 20:38:40');와이즈 토토:16SELECT date_part('시간', INTERVAL '4시간 3분');와이즈 토토:4
date_trunc #함수date_trunc개념적으로 다음과 유사합니다.트렁크숫자에 대한 함수.
date_trunc(필드,출처[,시간대])
출처유형의 값 표현식입니다.타임스탬프, 시간대가 포함된 타임스탬프또는간격. (유형 값날짜그리고시간다음으로 자동 전송됩니다.타임스탬프또는간격각각.)필드입력 값을 자를 정밀도를 선택합니다. 반환 값도 마찬가지로 유형입니다.타임스탬프, 시간대가 포함된 타임스탬프, 또는간격, 선택한 항목보다 중요하지 않은 모든 필드가 0(또는 일 및 월의 경우 1)으로 설정되어 있습니다.
유효한 값필드다음은:
마이크로초 |
밀리초 |
초 |
분 |
시간 |
일 |
주 |
월 |
분기 |
년 |
십년 |
세기 |
밀레니엄 |
입력값이 다음 유형인 경우시간대가 포함된 타임스탬프, 특정 시간대를 기준으로 잘림이 수행됩니다. 예를 들어, 다음으로 잘림일해당 영역에서 자정인 값을 생성합니다. 기본적으로 현재를 기준으로 잘림이 수행됩니다.시간대설정이지만 선택사항시간대81153_81283섹션 8.5.3.
처리 중에는 시간대를 지정할 수 없습니다.시간대 없는 타임스탬프또는간격입력. 이는 항상 액면 그대로 받아들여집니다.
예(현지 시간대가 다음과 같다고 가정미국/New_York):
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:00SELECT date_trunc('일', 시간대가 포함된 타임스탬프 '2001-02-16 20:38:40+00');와이즈 토토:2001-02-16 00:00:00-05SELECT date_trunc('일', 시간대가 포함된 타임스탬프 '2001-02-16 20:38:40+00', '호주/시드니');와이즈 토토:2001-02-16 08:00:00-05SELECT date_trunc('시간', INTERVAL '3일 02:47:33');와이즈 토토:3일 02:00:00
date_bin #함수date_bin “빈”지정된 간격의 입력 타임스탬프(보폭)는 지정된 원점에 맞춰 정렬됩니다.
날짜_빈(보폭,출처,원산지)
출처유형의 값 표현식입니다타임스탬프또는시간대가 포함된 타임스탬프. (유형 값날짜다음으로 자동 전송됩니다.타임스탬프.) 보폭유형의 값 표현식입니다.간격. 반환 값도 마찬가지로 유형입니다.타임스탬프또는시간대가 포함된 타임스탬프이며, 이는출처배치되었습니다.
예:
SELECT date_bin('15분', TIMESTAMP '2020-02-11 15:44:17', TIMESTAMP '2001-01-01');와이즈 토토:2020-02-11 15:30:00SELECT date_bin('15분', TIMESTAMP '2020-02-11 15:44:17', TIMESTAMP '2001-01-01 00:02:30');와이즈 토토:2020-02-11 15:32:30
전체 단위(1분, 1시간 등)의 경우 유사한 결과와 동일한 결과를 제공합니다.date_trunc콜, 하지만 차이점은 그것입니다date_bin임의의 간격으로 잘릴 수 있습니다.
그보폭간격은 0보다 커야 하며 월 이상의 단위를 포함할 수 없습니다.
시간대그리고현지에서 #그시간대연산자가 타임스탬프를 변환합니다.없이시간대와 타임스탬프 사이와시간대 및시간대 포함 시간값을 다른 시간대에 적용합니다.표 9.34변종을 보여줍니다.
표 9.34. 시간대그리고현지에서변형
|
운영자 설명 예제 |
|---|
|
주어진 타임스탬프를 변환합니다.없이시간대에서 타임스탬프까지함께시간대, 주어진 값이 명명된 시간대에 있다고 가정합니다.
|
|
주어진 타임스탬프를 변환합니다.없이시간대에서 타임스탬프까지와세션의
|
|
주어진 타임 스탬프를 변환합니다.함께시간대에서 타임스탬프까지없이시간대(해당 시간대에 표시되는 시간).
|
|
주어진 타임스탬프를 변환합니다.와시간대에서 타임스탬프까지없이시간대(세션의 시간과 함께 표시되는 시간)
|
|
주어진 시간을 변환합니다함께시간대를 새 시간대로 변경합니다. 날짜가 제공되지 않았으므로 명명된 대상 영역에 대해 현재 활성 UTC 오프셋을 사용합니다.
|
|
주어진 시간을 변환합니다함께시간대를 새 시간대로 변경합니다. 날짜가 제공되지 않았으므로 세션의 현재 활성 UTC 오프셋을 사용합니다. 세션을 가정하면
|
이 표현식에서는 원하는 시간대영역텍스트 값으로 지정할 수 있습니다(예:'미국/로스앤젤레스') 또는 간격으로(예:간격 '-08:00'). 텍스트의 경우 시간대 이름은 다음에 설명된 방법 중 하나로 지정할 수 있습니다.섹션 8.5.3. 간격 사례는 UTC로부터의 고정 오프셋이 있는 영역에만 유용하므로 실제로는 흔하지 않습니다.
구문현지에서다음의 약칭으로 사용될 수 있습니다.시간대, 여기서현지현지세션의 것입니다시간대값.
예(현재 가정시간대설정은미국/Los_Angeles):
시간대 'America/Denver'에서 타임스탬프 '2001-02-16 20:38:40' 선택;와이즈 토토:2001-02-16 19:38:40-08시간대 '2001-02-16 20:38:40-05' AT 시간대 'America/Denver'를 사용하여 타임스탬프 선택;와이즈 토토:2001-02-16 18:38:40타임스탬프 선택 '2001-02-16 20:38:40' 시간대 '아시아/도쿄' AT 시간대 '아메리카/시카고';와이즈 토토:2001-02-16 05:38:40현지에서 '2001-02-16 20:38:40-05' 시간대가 포함된 타임스탬프 선택;와이즈 토토:2001-02-16 17:38:40현지에서 '20:38:40-05' 시간대를 사용하여 시간을 선택하세요.와이즈 토토:17:38:40
첫 번째 예는 시간대가 부족한 값에 시간대를 추가하고 현재를 사용하여 값을 표시합니다.시간대설정. 두 번째 예에서는 시간대 값이 포함된 타임스탬프를 지정된 시간대로 이동하고 시간대가 없는 값을 반환합니다. 이를 통해 현재와 다른 값을 저장하고 표시할 수 있습니다.시간대설정. 세 번째 예에서는 도쿄 시간을 시카고 시간으로 변환합니다. 네 번째 예에서는 시간대 값이 포함된 타임스탬프를 현재 지정된 시간대로 이동합니다.시간대설정하고 시간대 없이 값을 반환합니다.
다섯 번째 예는 경고적인 이야기입니다. 입력값과 관련된 날짜가 없기 때문에 세션의 현재 날짜를 사용하여 변환이 이루어집니다. 따라서 이 정적 예제는 연도 중 보는 시간에 따라 잘못된 결과를 표시할 수 있습니다.'미국/로스앤젤레스'일광 절약 시간을 준수합니다.
함수SQL 준수 구문과 동일합니다.시간대(영역, 타임스탬프).타임스탬프시간대영역
함수SQL 준수 구문과 동일합니다.시간대(영역, 시간).시간시간대영역
함수SQL 준수 구문과 동일합니다.시간대(타임스탬프).타임스탬프현지에서
함수SQL 준수 구문과 동일합니다.시간대(시간).시간현지에서
포스트그레SQL은 현재 날짜 및 시간과 관련된 값을 반환하는 다양한 함수를 제공합니다. 이러한 SQL 표준 함수는 모두 현재 트랜잭션의 시작 시간을 기준으로 값을 반환합니다.
CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP CURRENT_TIME(정밀도) CURRENT_TIMESTAMP(정밀도) 현지시간 현지타임스탬프 현지시간(정밀도) 현지타임스탬프(정밀도)
CURRENT_TIME그리고CURRENT_TIMESTAMP시간대로 값을 전달합니다.현지시간그리고현지타임스탬프시간대 없이 값을 전달합니다.
CURRENT_TIME, CURRENT_TIMESTAMP, 현지시간및LOCALTIMESTAMP은 선택적으로 정밀도 매개변수를 취할 수 있으며, 이로 인해 결과는 초 필드에서 해당 소수 자릿수로 반올림됩니다. 정밀도 매개변수가 없으면 결과는 사용 가능한 전체 정밀도로 제공됩니다.
몇 가지 예:
현재_시간 선택;와이즈 토토:14:39:53.662522-05현재_날짜 선택;와이즈 토토:2019-12-23현재_TIMESTAMP 선택;와이즈 토토:2019-12-23 14:39:53.662522-05CURRENT_TIMESTAMP(2) 선택;와이즈 토토:2019-12-23 14:39:53.66-05현지 타임스탬프 선택;와이즈 토토:2019-12-23 14:39:53.662522
이 함수는 현재 트랜잭션의 시작 시간을 반환하므로 해당 값은 트랜잭션 중에 변경되지 않습니다. 이는 기능으로 간주됩니다. 단일 트랜잭션이 일관된 개념을 가질 수 있도록 하는 것이 목적입니다.“현재”시간, 동일한 트랜잭션 내의 여러 수정 사항이 동일한 타임스탬프를 갖도록 합니다.
다른 데이터베이스 시스템에서는 이러한 값을 더 자주 높일 수 있습니다.
PostgreSQL또한 현재 명령문의 시작 시간과 함수가 호출되는 순간의 실제 현재 시간을 반환하는 함수를 제공합니다. 비SQL 표준 시간 함수의 전체 목록은 다음과 같습니다.
transaction_timestamp() 문_타임스탬프() 시계_타임스탬프() 시간() 지금()
transaction_timestamp()다음과 동일함CURRENT_TIMESTAMP, 그러나 반환되는 내용을 명확하게 반영하기 위해 이름이 지정되었습니다.statement_timestamp()현재 명령문의 시작 시간(구체적으로는 클라이언트로부터 최신 명령 메시지를 받은 시간)을 반환합니다.statement_timestamp()그리고transaction_timestamp()트랜잭션의 첫 번째 문에서는 동일한 값을 반환하지만 후속 문에서는 다를 수 있습니다.시계_타임스탬프()실제 현재 시간을 반환하므로 단일 SQL 문 내에서도 해당 값이 변경됩니다.timeofday()역사적입니다PostgreSQL함수. 좋다시계_타임스탬프(), 실제 현재 시간을 반환하지만 형식이 지정된텍스트a가 아닌 문자열시간대가 포함된 타임스탬프값.지금()전통적인 것입니다포스트그레SQL동등함transaction_timestamp().
모든 날짜/시간 데이터 유형은 특수 리터럴 값도 허용합니다.지금현재 날짜와 시간을 지정합니다(역시 트랜잭션 시작 시간으로 해석됨). 따라서 다음 세 가지 모두 동일한 결과를 반환합니다.
CURRENT_TIMESTAMP 선택; 지금 선택(); 타임스탬프 '지금' 선택; -- 아래 팁을 참조하세요.
나중에 평가할 값을 지정할 때 세 번째 형식을 사용하지 마십시오(예: a기본값테이블 열에 대한 절입니다. 시스템이 변환됩니다.지금에타임스탬프상수가 구문 분석되자마자 기본값이 필요할 때 테이블 생성 시간이 사용됩니다! 처음 두 양식은 함수 호출이기 때문에 기본값이 사용될 때까지 평가되지 않습니다. 따라서 행 삽입 시간을 기본값으로 설정하는 원하는 동작을 제공합니다. (또한 참조섹션 8.5.1.4.)
서버 프로세스의 실행을 지연시키기 위해 다음 기능을 사용할 수 있습니다.
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또는 그 변형. 그렇지 않으면 다른 세션에서 수면 프로세스를 기다려야 하여 전체 시스템 속도가 느려질 수 있습니다.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.