표 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 | 결과 |
---|---|---|---|---|
|
간격 |
인수를 빼고 a“Symbolic”단지 며칠이 아닌 몇 년과 몇 달을 사용하는 결과 | Age (Timestamp '2001-04-10', Timestamp '1957-06-13') |
43 년 9 몬 몬 27 일 |
|
간격 |
SUPTRANTcurrent_date (자정에) |
Age (Timestamp '1957-06-13') |
43 년 8 몬 몬 3 일 |
|
시간대가있는 타임 스탬프 |
현재 사설 토토 및 시간 (명세서 실행 중 변경); 보다섹션 9.9.4 | ||
|
사설 토토 |
현재 사설 토토; 보다섹션 9.9.4 | ||
|
시간대가있는 시간 |
현재 시간; 보다섹션 9.9.4 | ||
|
시간대가있는 타임 스탬프 |
현재 사설 토토 및 시간 (현재 거래 시작); 보다섹션 9.9.4 | ||
|
이중 정밀 |
서브 필드 받기 (동등한Extract ); 보다섹션 9.9.1 |
date_part ( '시간', 타임 스탬프 '2001-02-16 20:38:40') |
20 |
|
더블 정밀도 |
서브 필드 얻기 (추출물 ); 보다섹션 9.9.1 |
date_part ( 'Month', 간격 '2 년 3 개월') |
3 |
|
타임 스탬프 |
지정된 정밀도로 잘린다; 참조 참조섹션 9.9.2 | date_trunc ( '시간', 타임 스탬프 '2001-02-16 20:38:40') |
2001-02-16 20:00:00 |
|
간격 |
지정된 정밀도로 잘린다; 참조 참조섹션 9.9.2 | date_trunc ( '시간', 간격 '2 일 3 시간 40 분') |
2 일 03:00:00 |
|
이중 정밀 |
서브 필드를 얻으십시오. 보다섹션 9.9.1 | Extract (Timestamp '2001-02-16 20:38:40'). |
20 |
|
더블 정밀도 |
서브 필드를 얻으십시오. 보다섹션 9.9.1 | Extract (매월 간격 '2 년 3 개월') |
3 |
|
부울 |
유한 사설 토토 테스트 (+/- 인피니티가 아님) | Isfinite (사설 토토 '2001-02-16') |
true |
|
부울 |
유한 타임 스탬프 테스트 (+/- 인피니티가 아님) | Isfinite (Timestamp '2001-02-16 21:28:30') |
true |
|
부울 |
유한 간격 테스트 | Isfinite (간격 '4 시간') |
true |
|
간격 |
간격 조정 30 일 기간은 몇 달으로 표시됩니다 | Justify_days (Interval '35 Days ') |
1 월 5 일 |
|
간격 |
간격 조정 24 시간 기간은 일로 표시됩니다 | Justify_hours (간격 '27 시간 ') |
1 일 03:00:00 |
|
간격 |
사용 간격 조정Justify_Days andJustify_hours , 추가 부호 조정 |
Justify_Interval (간격 '1 월 1 시간') |
29 일 23:00:00 |
|
Time |
현재 시간; 보다섹션 9.9.4 | ||
|
타임 스탬프 |
현재 사설 토토 및 시간 (현재 트랜잭션 시작); 보다섹션 9.9.4 | ||
|
사설 토토 |
연도, 월 및 주간 필드에서 사설 토토 생성 | make_date (2013, 7, 15) |
2013-07-15 |
|
간격 |
몇 년, 몇 달, 몇 주, 일, 시간, 몇 분 및 초 필드에서 간격을 만듭니다 | make_interval (days = 10) |
10 일 |
|
Time |
시간, 분 및 초 필드에서 시간을 만듭니다 | make_time (8, 15, 23.5) |
08:15:23.5 |
|
타임 스탬프 |
연도, 월, 주, 시간, 시간, 분 및 초 필드에서 타임 스탬프 생성 | make_timestamp (2013, 7, 15, 8, 15, 23.5) |
2013-07-15 08:15:23.5 |
|
시간대가있는 타임 스탬프 |
연도, 월, 일, 시간, 시간, 분 및 초 필드에서 시간대가있는 타임 스탬프를 만듭니다. 만약에TimeZone 지정되지 않았으며 현재 시간대가 사용됩니다 |
make_timestamptz (2013, 7, 15, 8, 15, 23.5) |
2013-07-15 08 : 15 : 23.5+01 |
|
시간대가있는 타임 스탬프 |
현재 사설 토토 및 시간 (현재 트랜잭션 시작); 보다섹션 9.9.4 | ||
|
시간대가있는 타임 스탬프 |
현재 사설 토토와 시간 (현재 문의 시작); 보다섹션 9.9.4 | ||
|
텍스트 |
현재 사설 토토와 시간 (keeclock_timestamp 하지만텍스트 String); 보다섹션 9.9.4 |
||
|
시간대가있는 타임 스탬프 |
현재 사설 토토 및 시간 (현재 거래 시작); 보다섹션 9.9.4 | ||
|
시간대가있는 타임 스탬프 |
UNIX EPOCH 변환 (1970-01-01 00 : 00 : 00+00 이후의 초) | TO_TIMESTAMP (1284352323) |
2010-09-13 04 : 32 : 03+00 |
(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 ');결과 :10537200
select (timestamptz의 2013-07-01 12:00:00 ')-추출물 (Epoch)-- 추출물 (Timestamptz의 2013-03-01 12:00:00 '))))))))) / 60 / 60 / 24;결과 :121.958333333333
TimesTamptz '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
Extract
, date_part
Extract (필드
From소스
)
theExtract
함수는 사설 토토/시간 값에서 해 또는 시간과 같은 서브 필드를 검색합니다.소스
유형의 값 표현식이어야합니다타임 스탬프
, Time
또는간격
. (유형의 표현사설 토토
타임 스탬프
따라서 사용할 수 있습니다.)필드
는 소스 값에서 추출 할 필드를 선택하는 식별자 또는 문자열입니다. 그만큼추출물
함수 유형 값을 반환이중 정밀도
. 다음은 유효한 필드 이름입니다.
Century
세기
추출을 선택하십시오 (Timestamp '2000-12-16 12:21:13');결과 :20
Extract (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_TIMESTAMP
a에서사설 토토
또는타임 스탬프
값은 오해의 소지가있는 결과를 낳을 수 있습니다. 결과는 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');결과 :2005
Extract (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');결과 :2453737
Extract (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-01
2004 년 53 주차의 일부이며2006-01-01
| 2005 년 52 주차의 일부이며2012-12-31
2013 년 첫 주의 일부입니다.Isoyear
함께 필드주
일관된 결과를 얻으려면
추출을 선택하십시오 (Timestamp '2001-02-16 20:38:40');결과 :7
Year
올해 필드. 없음을 명심하십시오0 AD
, SO SUTCARTINGBC
ad
연년교는 조심해야합니다.
추출을 선택하십시오 (Timestamp '2001-02-16 20:38:40');결과 :2001
입력 값이 +/- 인피니티 인 경우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');결과 :16
date_part ( '시간', 간격 '4 시간 3 분'); 선택결과 :4
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:00
date_trunc ( 'year', timestamp '2001-02-16 20:38:40'); 선택결과 :2001-01-01 00:00:00
at Time Zone
the시간대에서
타임 스탬프 변환시간대가없는TO/FROM TIME Stamp시간대와 함께및시간다른 시간대에 대한 값.표 9.31변형을 보여줍니다.
표 9.31. at Time 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:40
TimeStamp '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다른 시간에 대한 값 영역은 현재 활성 시간대 규칙을 사용하여 사설 토토가 제공되지 않기 때문에 현재 활성 시간대 규칙을 사용합니다.
함수
SQL 기능 구조와 동일합니다TimeZone
(Zone
, 타임 스탬프
)
.타임 스탬프
시간대에서Zone
PostgreSQL현재 사설 토토 및 시간과 관련된 값을 반환하는 여러 기능을 제공합니다. 이 SQL 표준은 현재 트랜잭션의 시작 시간에 따라 모든 반환 값을 기능합니다.
current_date current_time current_timestamp current_time (정밀
) current_timestamp (정밀
) 로컬 타임 localtimestamp 로컬 타임 (정밀
) LocalTimestamp (정밀
)
current_time
andcurrent_timestamp
시간대와 함께 값을 전달;LocalTime
andLocalTimestamp
시간대가없는 값 전달.
current_time
, current_timestamp
, LocalTime
및localtimestamp
선택적으로 정밀 매개 변수를 가져갈 수있어 결과가 초 필드의 많은 분수 숫자로 반올림됩니다. 정밀 매개 변수가 없으면 결과는 사용 가능한 전체 정밀도로 제공됩니다.
일부 예 :
current_time을 선택하십시오;결과 :14:39:53.662522-05
current_date; 선택결과 :2001-12-23
current_timestamp; 선택결과 :2001-12-23 14:39:53.662522-05
current_timestamp (2); 선택결과 :2001-12-23 14:39:53.66-05
LocalTimestamp 선택;결과 :2001-12-23 14:39:53.662522
이 함수는 현재 트랜잭션의 시작 시간을 리턴하므로 거래 중에 그 값이 변경되지 않습니다. 이것은 특징으로 간주됩니다. 의도는 단일 트랜잭션이 일관된 개념을 갖도록하는 것입니다.“현재”시간, 동일한 트랜잭션 내에서 다중 수정이 같은 시간 스탬프를 부여하도록합니다.
다른 데이터베이스 시스템이 이러한 값을 더 자주 발전시킬 수 있습니다.
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 선택; 지금 ()을 선택하십시오. 타임 스탬프 '지금'을 선택하십시오. -하지만 아래 팁 참조
나중에 평가할 값을 지정할 때는 세 번째 양식을 사용하지 마십시오. 예를 들어기본값
테이블 열의 조항. 시스템이 변환됩니다now
to a타임 스탬프
상수가 구문 분석하자마자 기본값이 필요할 때 테이블 생성 시간이 사용됩니다! 처음 두 가지 양식은 기본값이 사용될 때까지 평가되지 않습니다. 함수 호출이기 때문입니다. 따라서 이들은 행 삽입 시간에 대한 불이행의 원하는 동작을 제공 할 것입니다. (참조섹션 8.5.1.4.)
서버 프로세스의 실행을 지연시키기 위해 다음 기능을 사용할 수 있습니다.
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');
수면 간격의 효과적인 해상도는 플랫폼 별입니다. 0.01 초는 공통 값입니다. 수면 지연은 최소한 지정된만큼 길다. 서버로드와 같은 요소에 따라 더 길 수 있습니다. 특히,pg_sleep_until
지정된 시간에 정확히 깨어나는 것이 보장되지는 않지만 더 일찍 일어나지 않을 것입니다.
호출 할 때 세션이 필요 이상으로 더 많은 자물쇠를 보유하지 않도록하십시오PG_SLEEP
또는 그 변형. 그렇지 않으면 다른 세션이 수면 과정을 기다려야 전체 시스템을 늦추어야 할 수도 있습니다.