yyyy valor truncar rango manejo insertar hora fuera fechas fecha está convertir actual sql postgresql

valor - Fecha del extracto(aaaa/mm/dd) de una marca de tiempo en PostgreSQL



postgresql date format dd/mm/yyyy (6)

Quiero extraer solo la parte de fecha de una marca de tiempo en PostgreSQL.

Necesito que sea un tipo de DATE postgresql para poder insertarlo en otra tabla que espera un valor DATE .

Por ejemplo, si tengo 2011/05/26 09:00:00 , quiero 2011/05/26

Intenté lanzar, pero solo recibí 2011:

timestamp:date cast(timestamp as date)

Intenté to_char() con to_date() :

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

Traté de hacerlo una función:

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

¿Cuál es la mejor forma de extraer la fecha (aaaa / mm / dd) de una marca de tiempo en PostgreSQL?


¿Has intentado convertirlo en una fecha con <mydatetime>::date ?


Esto funciona para mí en python 2.7

select some_date::DATE from some_table;


Puede convertir su marca de tiempo en una fecha suffixing con ::date . Aquí, en psql, hay una marca de tiempo:

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

Ahora lo lanzaremos a una fecha:

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

Por otro lado, puede usar la función date_trunc . La diferencia entre ellos es que este último devuelve el mismo tipo de datos como timestamptz manteniendo intacta su zona horaria (si la necesita).

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


Solo select date(timestamp_column) y obtendrá la única parte de la fecha. A veces, al select timestamp_column::date puede devolver la date 00:00:00 donde no se elimina la parte 00:00:00 . Pero he visto que la date(timestamp_column) funciona perfectamente en todos los casos. Espero que esto ayude.


Use la función de date :

select date(timestamp_field) from table

Desde una representación de campo de caracteres hasta una fecha que puede usar:

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

Código de prueba:

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;

Resultado de la prueba:


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)

Otro kit de prueba:

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