[sql] PostgreSQL의 타임 스탬프에서 날짜 추출 (yyyy / mm / dd)

PostgreSQL의 타임 스탬프에서 날짜 부분 만 추출하고 싶습니다.

DATE을 기대하는 다른 테이블에 삽입 할 수 있도록 postgresql 유형 이어야 DATE합니다.

내가 가진 예를 들어 2011/05/26 09:00:00, 내가 원하는2011/05/26

캐스팅을 시도했지만 2011 년만 가져옵니다.

timestamp:date
cast(timestamp as date)

나는 to_char()함께 시도 했다 to_date():

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의 타임 스탬프에서 날짜 (yyyy / mm / dd)를 추출하는 가장 좋은 방법은 무엇입니까?



답변

타임 스탬프를로 접미사로 지정하여 날짜를 표시 할 수 있습니다 ::date. 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)


답변

날짜 기능을 사용하십시오 .

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;

검사 결과:

pgAdmin 결과

pgAdmin 결과 전체


답변

날짜와 함께 날짜를 보내려고 했습니까 <mydatetime>::date?


답변

이것은 파이썬 2.7에서 작동합니다.

 select some_date::DATE from some_table;


답변

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)


답변

그냥 select date(timestamp_column)하고 날짜 부분 만 얻으십시오. 때로는 부품을 제거하지 않은 곳에서 작업을 수행 select timestamp_column::date할 수 있습니다 . 그러나 모든 경우에 완벽하게 작동하는 것을 보았습니다 . 도움이 되었기를 바랍니다.date 00:00:0000:00:00date(timestamp_column)


답변

postgres에서 간단히 : TO_CHAR (timestamp_column, ‘DD / MM / YYYY’) as submission_date