Извлечь дату (гггг / мм / дд) из метки времени в PostgreSQL

Я хочу извлечь только часть даты из метки времени в PostgreSQL.

Мне нужно, чтобы это был тип postgresql DATE , чтобы я мог вставить его в другую таблицу, которая ожидает 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?

221
задан lospejos 28 February 2019 в 01:17
поделиться