복붙노트

[SQL] PostgreSQL의에서 타임 스탬프에서 추출 날짜 (년 / 월 / 일)

SQL

PostgreSQL의에서 타임 스탬프에서 추출 날짜 (년 / 월 / 일)

나는 PostgreSQL을에 타임 스탬프에서 불과 날짜 부분을 추출 할.

나는 날짜 값을 예상하고 다른 테이블에 삽입 할 수 있도록이 PostgreSQL의 DATE 타입을해야합니다.

내가 2011년 5월 26일 9시 0분 0초이있는 경우 예를 들어, 나는 2011년 5월 26일을 원하는

나는 캐스팅했지만, 난 단지 2011 수 :

timestamp:date
cast(timestamp as date)

나는 TO_DATE와 TO_CHAR를 () () 시도 :

SELECT to_date(to_char(timestamp, 'YYYY/MM/DD'), 'YYYY/MM/DD') 
FROM val3 WHERE id=1;

나는 그것을 함수 만들려고 :

CREATE OR REPLACE FUNCTION testing() RETURNS void AS '
DECLARE i_date DATE;
BEGIN
    SELECT to_date(to_char(val1, "YYYY/MM/DD"),"YYYY/MM/DD") 
      INTO i_date FROM exampTable WHERE id=1;
    INSERT INTO foo(testd) VALUES (i);
END

PostgreSQL의에서 타임 스탬프에서 추출 날짜 (년 / 월 / 일)에 가장 좋은 방법은 무엇입니까?

해결법

  1. ==============================

    1.당신과 함께 :: 날짜를 부기 날짜에 타임 스탬프를 캐스팅 할 수 있습니다. 여기에, psql의에서, 타임 스탬프입니다 :

    당신과 함께 :: 날짜를 부기 날짜에 타임 스탬프를 캐스팅 할 수 있습니다. 여기에, psql의에서, 타임 스탬프입니다 :

    # select '2010-01-01 12:00:00'::timestamp;
          timestamp      
    ---------------------
     2010-01-01 12:00:00
    

    이제 우리는 날짜로 캐스팅 있습니다 :

    wconrad=# select '2010-01-01 12:00:00'::timestamp::date;
        date    
    ------------
     2010-01-01
    

    반면에 당신은 date_trunc 기능을 사용할 수 있습니다. 그들 사이의 차이점은 후자의 반환 timestamptz 그대로 시간대를 유지 같은 동일한 데이터 유형 (필요한 경우).

    => select date_trunc('day', now());
           date_trunc
    ------------------------
     2015-12-15 00:00:00+02
    (1 row)
    
  2. ==============================

    2.날짜 기능을 사용 :

    날짜 기능을 사용 :

    select date(timestamp_field) from table
    

    당신이 사용할 수있는 최신 문자 필드 표현에서 :

    select date(substring('2011/05/26 09:00:00' from 1 for 10));
    

    테스트 코드 :

    create table test_table (timestamp_field timestamp);
    insert into test_table (timestamp_field) values(current_timestamp);
    select timestamp_field, date(timestamp_field) from test_table;
    

    검사 결과:

  3. ==============================

    3.당신이 :: 날짜, 날짜로 캐스팅하려고 있나요?

    당신이 :: 날짜, 날짜로 캐스팅하려고 있나요?

  4. ==============================

    4.이것은 파이썬 2.7에서 나를 위해 작동

    이것은 파이썬 2.7에서 나를 위해 작동

     select some_date::DATE from some_table;
    
  5. ==============================

    5.

    CREATE TABLE sometable (t TIMESTAMP, d DATE);
    INSERT INTO sometable SELECT '2011/05/26 09:00:00';
    UPDATE sometable SET d = t; -- OK
    -- UPDATE sometable SET d = t::date; OK
    -- UPDATE sometable SET d = CAST (t AS date); OK
    -- UPDATE sometable SET d = date(t); OK
    SELECT * FROM sometable ;
              t          |     d      
    ---------------------+------------
     2011-05-26 09:00:00 | 2011-05-26
    (1 row)
    

    또 다른 테스트 키트 :

    SELECT pg_catalog.date(t) FROM sometable;
        date    
    ------------
     2011-05-26
    (1 row)
    
    SHOW datestyle ;
     DateStyle 
    -----------
     ISO, MDY
    (1 row)
    
  6. ==============================

    6.그냥 선택 날짜 (timestamp_column를) 할 당신은 단지 날짜 부분을 얻을 것입니다. 때로는이 0시 0분 0초 부분을 제거하지 않는 경우 날짜 0시 0분 0초를 반환 할 수 있습니다 선택 timestamp_column :: 일을하고. 하지만 모든 경우에 완벽하게 일 이내 (timestamp_column)를 보았다. 도움이 되었기를 바랍니다.

    그냥 선택 날짜 (timestamp_column를) 할 당신은 단지 날짜 부분을 얻을 것입니다. 때로는이 0시 0분 0초 부분을 제거하지 않는 경우 날짜 0시 0분 0초를 반환 할 수 있습니다 선택 timestamp_column :: 일을하고. 하지만 모든 경우에 완벽하게 일 이내 (timestamp_column)를 보았다. 도움이 되었기를 바랍니다.

  7. ==============================

    7.단순히 포스트 그레스에서 : TO_CHAR (timestamp_column, 'DD / MM / YYYY') submission_date로

    단순히 포스트 그레스에서 : TO_CHAR (timestamp_column, 'DD / MM / YYYY') submission_date로

  8. from https://stackoverflow.com/questions/6133107/extract-date-yyyy-mm-dd-from-a-timestamp-in-postgresql by cc-by-sa and MIT license