[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;
검사 결과:
답변
날짜와 함께 날짜를 보내려고 했습니까 <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:00
00:00:00
date(timestamp_column)
답변
postgres에서 간단히 : TO_CHAR (timestamp_column, ‘DD / MM / YYYY’) as submission_date