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

9.9. 스포츠 토토 베트맨/시간 함수 및 운영자

표 9-26스포츠 토토 베트맨/시간 값 처리에 사용할 수 있는 함수를 표시합니다. 자세한 내용은 다음 하위 섹션에 나와 있습니다.표 9-25기본 산술 연산자의 동작을 설명합니다. (+, *등). 서식 지정 기능은 다음을 참조하세요.섹션 9.8. 당신은 스포츠 토토 베트맨/시간 데이터 유형에 대한 배경 정보를 잘 알고 있습니다. 에서PostgreSQL : 문서 : 8.0 : 날짜/배트맨 토토 유형.

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

표 9-25. 스포츠 토토 베트맨/시간 연산자

운영자 결과
+ 스포츠 토토 베트맨 '2001-09-28' + 정수 '7' 스포츠 토토 베트맨 '2001-10-05'
+ 스포츠 토토 베트맨 '2001-09-28' + 간격 '1 시간' 타임스탬프 '2001-09-28 01:00'
+ 스포츠 토토 베트맨 '2001-09-28' + 시간 '03:00' 타임스탬프 '2001-09-28 03:00'
+ 간격 '1일' + 간격 '1 시간' 간격 '1일 01:00'
+ 타임스탬프 '2001-09-28 01:00' + 간격 '23시간' 타임스탬프 '2001-09-29 00:00'
+ 시간 '01:00' + 간격 '3 시간' 시간 '04:00'
- - 간격 '23시간' 간격 '-23:00'
- 스포츠 토토 베트맨 '2001-10-01' - 스포츠 토토 베트맨 '2001-09-28' 정수 '3'
- 스포츠 토토 베트맨 '2001-10-01' - 정수 '7' 스포츠 토토 베트맨 '2001-09-24'
- 스포츠 토토 베트맨 '2001-09-28' - 간격 '1 시간' 타임스탬프 '2001-09-27 23:00'
- 시간 '05:00' - 시간 '03:00' 간격 '02:00'
- 시간 '05:00' - 간격 '2 시간' 시간 '03:00'
- 타임스탬프 '2001-09-28 23:00' - 간격 '23시간' 타임스탬프 '2001-09-28 00:00'
- 간격 '1일' - 간격 '1 시간' 간격 '23:00'
- 타임스탬프 '2001-09-29 03:00' - 타임스탬프 '2001-09-27 12:00' 간격 '1일 15:00'
* 간격 '1시간' * double 정밀도 '3.5' 간격 '03:30'
/ 간격 '1시간'/더블 정밀도 '1.5' 간격 '00:40'

표 9-26. 스포츠 토토 베트맨/시간 함수

기능 반환 유형 설명 결과
나이(타임스탬프, 타임스탬프) 간격 인수를 빼서 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
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
추출(필드from타임스탬프) 배정밀도 하위 필드 가져오기; 보다섹션 9.9.1 추출(타임스탬프에서 시간 '2001-02-16 20:38:40') 20
추출(필드from간격) 배정밀도 하위 필드 가져오기; 보다섹션 9.9.1 추출(간격 '2의 월 년 3개월') 3
무한(타임스탬프) 부울 유한한 타임 스탬프 테스트(다음과 같지 않음) 무한대) isfinite(타임스탬프 '2001-02-16 21:28:30')
무한(간격) 부울 유한 간격 테스트 무한(간격 '4 시간')
현지시간 시간 시간; 보다섹션 9.9.4
localtimestamp 타임스탬프 스포츠 토토 베트맨와 시간; 보다섹션 9.9.4
지금() 시간대가 포함된 타임스탬프 현재 스포츠 토토 베트맨 및 시간(동등함현재_타임스탬프); 보다섹션 9.9.4
timeofday() 텍스트 현재 스포츠 토토 베트맨 및 시간; 보다섹션 9.9.4

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

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

이 표현식은 두 기간(다음으로 정의됨)일 때 참이 됩니다. 끝점)이 겹치고, 겹치지 않으면 false입니다. 그만큼 엔드포인트는 스포츠 토토 베트맨, 시간 또는 시간의 쌍으로 지정할 수 있습니다. 우표; 또는 스포츠 토토 베트맨, 시간 또는 타임스탬프 다음에 간격.

SELECT (스포츠 토토 베트맨 '2001-02-16', 스포츠 토토 베트맨 '2001-12-21') 겹침
       (스포츠 토토 베트맨 '2001-10-30', 스포츠 토토 베트맨 '2002-10-30');결과:SELECT (스포츠 토토 베트맨 '2001-02-16', 간격 '100일') 겹침
       (스포츠 토토 베트맨 '2001-10-30', 스포츠 토토 베트맨 '2002-10-30');결과:거짓

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, 바티칸 로마의 성 베드로 대성당.

포스트그레SQL출시 8.0 이전에는 기존의 번호 매기기를 따르지 않았습니다. 세기를 반환했지만 연도 필드를 다음으로 나눈 값을 반환했습니다. 100.

일(월) 필드(1 - 31)

추출물 선택(타임스탬프 '2001-02-16 20:38:40'의 스포츠 토토 베트맨);결과:16
십년

연도 필드를 10으로 나눈 값

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

요일(0 - 6; 일요일은 0)(for타임스탬프값만)

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

참고하세요추출의 날 주의 번호 매기기가 해당 주의 번호와 다릅니다.to_char함수.

도이

연중 일(1 - 365/366) (for타임스탬프값만)

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

스포츠 토토 베트맨그리고타임스탬프값, 이후 경과된 시간(초) 1970-01-01 00:00:00-00 (음수일 수 있음); 을 위한간격값, 총 초 수 그 간격에

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

에포크 값을 다시 에포크 값으로 변환하는 방법은 다음과 같습니다. 타임스탬프:

시간대 '에포크' + 982384720 * 간격 '1초'가 포함된 타임스탬프 선택;
시간

시간 필드(0 - 23)

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

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

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

천년기

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

1900년대는 두 번째 천년기에 속합니다. 그만큼 세 번째 밀레니엄은 2001년 1월 1일에 시작됩니다.

PostgreSQL출시 8.0 이전에는 기존의 번호 매기기를 따르지 않았습니다. 수천년이지만 연도 필드를 다음으로 나눈 값을 반환했습니다. 1000.

밀리초

소수 부분을 포함한 초 필드는, 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[1])

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

UTC로부터의 시간대 오프셋으로, 초 단위로 측정됩니다. 양수 값은 UTC 동쪽 시간대에 해당합니다. UTC 서쪽 지역에는 음수 값이 적용됩니다.

timezone_hour

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

timezone_min

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

해당 스포츠 토토 베트맨가 속한 주의 수입니다. 정의에 따르면 (ISO8601), 연도의 첫 번째 주에는 다음 스포츠 토토 베트맨의 1월 4일이 포함됩니다. 그 해. (그만큼ISO-8601주는 월요일에 시작됩니다.) 즉, 일년 중 첫 번째 목요일은 1번째 주에 속합니다. 그 해. (을 위한타임스탬프값 오직)

이 때문에 1월 초에는 가능합니다 스포츠 토토 베트맨는 이전의 52번째 또는 53번째 주에 속해야 합니다. 년도. 예를 들어,2005-01-01이다 2004년 53번째 주의 일부 및2006-01-01다음의 52번째 주의 일부입니다. 2005년.

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

연도 필드입니다. 없다는 점을 명심하세요.0 AD, 그래서 빼기BC년부터AD한 해를 조심스럽게 보내야 합니다.

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

추출함수는 주로 계산 처리를 위한 것입니다. 서식을 지정하려면 표시할 스포츠 토토 베트맨/시간 값은 다음을 참조하세요.섹션 9.8.

date_part함수는 전통적인 방식을 모델로 함앵그르에 해당SQL-표준 함수추출:

스포츠 토토 베트맨_부분('필드', 출처)

여기에 주의하세요필드매개변수는 이름이 아닌 문자열 값이어야 합니다. 유효한 에 대한 필드 이름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으로 설정됩니다(또는 요일 및 월).

유효한 값필드다음은:

마이크로초
밀리초
시간
분기
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. AT 시간대

시간대구조가 허용합니다 타임스탬프를 다른 시간대로 변환합니다.테이블 9-27변종을 보여줍니다.

표 9-27.시간에 존변형

표현 반환 유형 설명
타임스탬프 시간대 없음시간대영역 시간대가 포함된 타임스탬프 주어진 시간대의 현지 시간을 UTC로 변환
타임스탬프 포함 시간대시간대영역 시간이 없는 타임스탬프 존 UTC를 특정 시간대의 현지 시간으로 변환
시간과 시간 존시간대영역 시간대 포함 시간 시간대에 따른 현지 시간 변환

이 표현식에서는 원하는 시간대영역텍스트로 지정할 수 있습니다. 문자열(예:'PST') 또는 간격으로 (예:간격 '-08:00'). 본문에서 이 경우 사용 가능한 영역 이름은 다음과 같습니다.테이블 B-4. (더 일반적인 이름을 지원하는 것이 유용할 것입니다. 에 표시됨테이블 B-6, 아직 구현되지 않았습니다.)

예(현지 시간대가 다음과 같다고 가정PST8PDT):

시간대 'MST'에서 타임스탬프 '2001-02-16 20:38:40' 선택;결과:2001-02-16 19:38:40-08'MST' 시간대에 '2001-02-16 20:38:40-05' 시간대가 포함된 타임스탬프 선택;결과:2001-02-16 18:38:40

첫 번째 예는 영역 없는 타임 스탬프를 취하고 이를 MST 시간(UTC-7)으로 해석하여 UTC 타임스탬프를 생성합니다. 그런 다음 표시를 위해 PST(UTC-8)로 회전됩니다. 두 번째 예에서는 EST(UTC-5)로 지정된 타임스탬프를 사용하고 MST(UTC-7) 현지 시간으로 변환합니다.

함수시간대(영역, 타임스탬프)은 다음과 같습니다. SQL 준수 구문타임스탬프시간대영역.

9.9.4. 현재의 스포츠 토토 베트맨/시간

현재 값을 얻기 위해 다음 기능을 사용할 수 있습니다. 스포츠 토토 베트맨 및/또는 시간:

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

CURRENT_TIME그리고CURRENT_TIMESTAMP시간에 따른 가치 전달 존;현지시간그리고현지타임스탬프시간 없이 가치를 전달하다 존.

CURRENT_TIME, CURRENT_TIMESTAMP, 현지시간현지타임스탬프선택적으로 결과를 반올림하는 정밀도 매개변수 초 필드에 그만큼의 소수 자릿수가 있습니다. 없이 정밀도 매개변수, 결과는 사용 가능한 전체 값으로 제공됩니다. 정도.

참고:이전포스트그레SQL7.2, 정밀도 매개변수가 구현되지 않았으며 결과는 항상 정수 초로 제공됩니다.

일부 예:

현재_시간 선택;결과: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다음과 동일함CURRENT_TIMESTAMP.

기능도 있습니다timeofday(), 역사적인 이유로 를 반환합니다.텍스트a 대신 문자열타임스탬프값:

시간 선택();결과:2월 17일 토요일 19:07:32.000126 2001 EST

그것을 아는 것이 중요합니다.CURRENT_TIMESTAMP및 관련 기능 현재 트랜잭션의 시작 시간을 반환합니다. 그들의 가치 거래 중에는 변경하지 마십시오. 이는 다음으로 간주됩니다. 기능: 의도는 단일 트랜잭션이 의 일관된 개념"현재"시간, 동일한 내에서 여러 수정이 가능하도록 거래에는 동일한 타임스탬프가 있습니다.timeofday()벽시계 시간을 반환하고 거래 중에 진행됩니다.

참고:다른 데이터베이스 시스템이 이러한 기능을 향상시킬 수 있습니다. 더 자주 가치를 부여합니다.

모든 스포츠 토토 베트맨/시간 데이터 유형은 특수 리터럴도 허용합니다. 값지금현재 스포츠 토토 베트맨를 지정하려면 그리고 시간. 따라서 다음 세 가지 모두 동일한 결과를 반환합니다. 결과:

현재_TIMESTAMP 선택;
지금 선택();
타임스탬프 '지금' 선택;

팁:당신은 다음과 같은 경우에 세 번째 형식을 사용하고 싶지 않습니다. a 지정기본값절 while 테이블을 만드는 중입니다. 시스템이 변환됩니다.지금타임스탬프으로 상수가 구문 분석되자마자 기본값이 값이 필요하면 테이블 생성 시간은 사용된! 처음 두 양식은 다음이 완료될 때까지 평가되지 않습니다. 함수 호출이기 때문에 기본값이 사용됩니다. 따라서 그들은 기본적으로 원하는 행동을 제공할 것입니다. 행 삽입 시간.

참고

[1]

60 윤초가 연산에 의해 구현된 경우 체계