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

4.7. 날짜/토토 베이 함수

표 4-14날짜/토토 베이 값 처리에 사용할 수 있는 함수를 표시합니다. 는 기본 산술 연산자(+, *등)도 사용할 수 있습니다. 에 대한 서식 지정 함수는 참조섹션 4.6. 당신은 날짜/토토 베이 데이터 유형에 대한 배경 정보를 잘 알고 있습니다. (참조PostgreSQL : 문서 : 7.1 : 날짜/토토 꽁 머니 유형).

표 4-14. 날짜/토토 베이 함수

이름 반환 유형 설명 결과
나이(타임스탬프) 간격 오늘에서 빼기 나이(타임스탬프 '1957-06-13') 43년 8개월 3일
나이(타임스탬프, 타임스탬프) 간격 인수 빼기 age('2001-04-10', 타임스탬프 '1957-06-13') 43년 9월 27일 일
현재_날짜 날짜 오늘 날짜; 참조아래
현재_토토 베이 토토 베이 토토 베이; 참조아래
현재_타임스탬프 타임스탬프 날짜와 토토 베이; 또한 참조아래
date_part(텍스트, 타임스탬프) 배정밀도 하위 필드 가져오기(동등함추출); 또한 참조아래 date_part('토토 베이', 타임스탬프 '2001-02-16 20:38:40') 20
date_part(텍스트, 간격) 배정밀도 하위 필드 가져오기(동등함추출); 또한 참조아래 date_part('월', 간격 '2년 3개월') 3
date_trunc(텍스트, 타임스탬프) 타임스탬프 지정된 내용으로 자르기 정밀도; 또한 참조아래 date_trunc('토토 베이', 타임스탬프 '2001-02-16 20:38:40') 2001-02-16 20:00:00+00
추출(필드타임스탬프에서) 배정밀도 하위 필드 가져오기; 또한 참조아래 추출(타임스탬프에서 토토 베이 '2001-02-16 20:38:40') 20
추출(필드간격에서) 배정밀도 하위 필드 가져오기; 또한 참조아래 추출(간격의 월 '2년 3개월') 3
유한(타임스탬프) 부울 유한한 타임 스탬프 테스트 (유효하지도 않고 무한대도 아님) 무한(타임스탬프 '2001-02-16 21:28:30')
무한(간격) 부울 유한 테스트 간격 무한(간격 '4 토토 베이') 사실
지금() 타임스탬프 현재 날짜 및 토토 베이 (동등함현재_타임스탬프); 또한 참조아래
timeofday() 텍스트 고정밀 날짜 및 토토 베이; 또한 참조아래 timeofday() 수 2월 21일 17:01:13.000126 2001년 동부 표준시
타임스탬프(날짜) 타임스탬프 타임스탬프 날짜 타임스탬프(날짜 '2000-12-25') 2000-12-25 00:00:00
타임스탬프(날짜, 토토 베이) 타임스탬프 날짜 및 토토 베이 타임스탬프 타임스탬프(날짜 '1998-02-24', 토토 베이 '23:07') 1998-02-24 23:07:00

4.7.1. 추출, date_part

추출(필드발신출처)

추출함수 검색 연도 또는 토토 베이과 같은 날짜/토토 베이 값의 하위 필드입니다.출처값 표현식입니다. 유형으로 평가됩니다.타임스탬프또는간격. (유형의 표현날짜또는토토 베이다음으로 전송됩니다타임스탬프그러므로 다음과 같이 사용할 수 있습니다. 음.)필드식별자입니다. 또는 소스에서 추출할 필드를 선택하는 문자열 가치.추출함수 반환 유형 값배정밀도. 는 유효한 값은 다음과 같습니다.

세기

연도 필드를 100으로 나눈 값

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

세기 필드의 결과는 다음과 같습니다. 일반적인 방식이 아닌 100으로 나눈 연도 필드 대부분의 연도를 1900년대로 두는 정의 20세기.

일(월) 필드(1 - 31)

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

연도 필드를 10으로 나눈 값

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

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

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

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

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

날짜그리고타임스탬프값, 이후 경과된 토토 베이(초) 1970-01-01 00:00:00 (결과가 부정적일 수 있습니다.); 에 대한간격값, 총 개수 간격의 초

추출 선택(타임스탬프 '2001-02-16 20:38:40'의 에포크);결과:982352320추출 선택('5일 3토토 베이' 간격의 에포크);결과:442800
토토 베이

토토 베이 필드(0 - 23)

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

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

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

연도 필드를 1000으로 나눈 값

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

밀레니엄 필드의 결과는 다음과 같습니다. 단순히 연도 필드를 1000으로 나눈 것이지, 1900년대를 1900년대로 보는 전통적인 정의 두 번째 천년.

밀리초

소수 부분을 포함한 초 필드는, 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) (for타임스탬프값만)

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

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

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

A로부터타임스탬프값, 해당 날짜가 해당 연도의 몇 번째 주인지 계산합니다. 에 있습니다. 정의에 따르면 (ISO8601), 연도의 첫 번째 주에는 다음 날짜의 1월 4일이 포함됩니다. 그 해. (그ISO주 월요일부터 시작됩니다.) 즉, 첫 번째 목요일입니다. 1년은 해당 연도의 1주차입니다.

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

연도 필드

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

추출함수는 주로 계산 처리를 위한 것입니다. 날짜/토토 베이 형식 지정의 경우 표시 값은 참조섹션 4.6.

날짜_부분함수가 모델링되었습니다. 전통적으로앵그르에 해당SQL-토토 베이추출:

날짜_부분('필드', 출처)
여기에 주의하세요필드값은 문자열이어야 합니다. 에 대한 유효한 필드 값date_part다음과 동일합니다추출.
SELECT 날짜_부분('일', TIMESTAMP '2001-02-16 20:38:40');결과:16SELECT date_part('토토 베이', INTERVAL '4토토 베이 3분')결과:4

4.7.2. date_trunc

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

date_trunc('필드', 출처)
출처값 표현식입니다. 유형타임스탬프(유형 값날짜그리고토토 베이있습니다 자동으로 전송).필드타임스탬프 값을 자를 정밀도를 선택합니다. 반환 값은 다음 유형입니다.타임스탬프선택한 필드보다 작은 모든 필드는 0으로 설정됩니다. (또는 일과 월에 대해 하나).

유효한 값필드다음은:

마이크로초
밀리초
토토 베이
10년
세기
밀레니엄
SELECT date_trunc('토토 베이', TIMESTAMP '2001-02-16 20:38:40');결과:2001-02-16 20:00:00+00SELECT date_trunc('연도', TIMESTAMP '2001-02-16 20:38:40');결과:2001-01-01 00:00:00+00

4.7.3. 현재 날짜/토토 베이

현재 값을 얻기 위해 다음 기능을 사용할 수 있습니다. 날짜 및/또는 토토 베이:

CURRENT_TIME
CURRENT_DATE
CURRENT_TIMESTAMP
다음의 요구사항 때문에 주의하세요SQL표준, 이 함수는 호출되어서는 안 됩니다. 뒤에 괄호가 있습니다.
현재_토토 베이 선택;19:07:32현재_날짜 선택;2001-02-17현재_TIMESTAMP 선택;2001-02-17 19:07:32-05

함수지금()이것은 전통적포스트그레스동등함CURRENT_TIMESTAMP.

또한 있습니다timeofday(), 이는 현재 토토 베이을 더 높은 정밀도로 반환합니다.CURRENT_TIMESTAMP가족이 하는 일:

SELECT timeofday();
 2월 17일 토요일 19:07:32.000126 2001 EST

timeofday()운영을 사용합니다 시스템 호출gettimeofday(2), 이는 마이크로초만큼 좋은 해상도를 가질 수 있습니다(귀하의 환경에 따라 다름). 플랫폼); 다른 기능은 다음과 같습니다.토토 베이(2)1초로 제한됩니다. 해상도. 역사적인 이유로,timeofday()결과를 텍스트 문자열로 반환합니다. 타임스탬프 값이 아닌.

그것을 깨닫는 것이 매우 중요합니다.CURRENT_TIMESTAMP및 관련 기능 모두 현재 트랜잭션이 시작된 시점의 토토 베이을 반환합니다. 트랜잭션이 실행되는 동안 해당 값은 증가하지 않습니다. 하지만timeofday()실제 값을 반환합니다. 현재 토토 베이.

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

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

참고:다음 경우에 세 번째 형식을 사용하고 싶지 않습니다. 테이블을 생성하는 동안 DEFAULT 값을 지정합니다. 는 시스템이 변환됩니다지금에 상수가 구문 분석되자마자 타임스탬프가 표시되므로 기본값이 필요하며, 테이블 생성 토토 베이 사용될 것이다! 처음 두 양식은 평가되지 않습니다. 함수이기 때문에 기본값이 사용될 때까지 전화. 따라서 그들은 원하는 동작을 제공합니다 기본값은 행 삽입 토토 베이입니다.

참고

[1]

60 윤초가 연산에 의해 구현된 경우 시스템