[백업][가리사니] postgresql datetime 에서 요일/시간등 속성만 추출
postgresql

이 문서는 가리사니 개발자 포럼에 올렸던 글의 백업 파일입니다. 오래된 문서가 많아 현재 상황과 맞지 않을 수 있습니다.

출처 : http://www.postgresql.org/docs/9.5/static/functions-datetime.html

EXTRACT

SELECT EXTRACT(속성 FROM 시간);

예를 들어 현재(now) 의 요일을 가져오는 경우라면.

SELECT EXTRACT(DOW FROM now());

각종 속성들

day

월에서의 day 1 - 31 사이의 값을 가져옴.

SELECT EXTRACT(DAY FROM TIMESTAMP '2001-02-16 20:38:40');
Result: 16

다만 아래와 같이 INTERVAL ‘40 days 1 minute’ 같은 속성이라면 40이 반환됨.

SELECT EXTRACT(DAY FROM INTERVAL '40 days 1 minute');
Result: 40

decade

10 단위의 연 (예 2010년이라면 201 이 반환)

SELECT EXTRACT(DECADE FROM TIMESTAMP '2001-02-16 20:38:40');
Result: 200

dow

요일 0 ~ 6 (0은 일요일)

SELECT EXTRACT(DOW FROM TIMESTAMP '2001-02-16 20:38:40');
Result: 5

hour

시간

SELECT EXTRACT(HOUR FROM TIMESTAMP '2001-02-16 20:38:40');
Result: 20

epoch

유닉스 시간

  • 1970-01-01 00:00:00 부터 1초당 1씩 증가
  • PG-SQL 에서는 1 초 이하는 소수점으로 표시합니다.
  • 9.5 윈도우 버전 기준으로 소수점 5자리 까지 표시됩니다. (10만분의 1초 : 다만 아래설명)
  • PG-SQL에서 모든 시간단위는 백만분의 1초라고 가정하고 프로그래밍 하셔야합니다.
    SELECT EXTRACT(EPOCH FROM TIMESTAMP WITH TIME ZONE '2001-02-16 20:38:40.12-08');
    Result: 982384720.12
    

    예를들어 자바나 자바스크립트등에서 나오는 유닉스 타임 1/1000 을 구하고싶다면 아래 코드처럼 입력해주시면 됩니다.

    SELECT (EXTRACT(epoch FROM now()) * 1000)::bigint;
    

그 밖에 많은 설정들은 위 출처(공식문서) 사이트를 확인해주세요.!