2016-02-23 3 views
0

У меня есть таблица, в которой mydate хранится в символьном переменном столбце в следующем формате YYYY-MM-DD. Некоторые строки в этой таблице пусты для этого столбца. Я хочу, чтобы отформатировать дату следующим образом:Дата форматирования в Postgres

SELECT to_char(date mydate, 'FMDay FMDD FMMonth FMYYYY') 
    FROM my_table where mydate is not null limit 10; 

Но я получаю следующее сообщение об ошибке: ERROR: syntax error at or near "mydate" LINE 1: select to_char(date mydate, 'FMDay FMDD FMMonth FMYYY...

Почему это происходит.

+0

Почему вы храните даты как 'varchar'? Не делай этого. –

ответ

0

Вам необходимо сначала преобразовать значение varchar в значение даты, чтобы вы могли преобразовать его обратно в форматированный varchar.

Вам нужно удалить ключевое слово date перед именем столбца. Ключевое слово date требуется только в том случае, если вы указали дату константы («литералы»), а не когда вы ссылаетесь на столбец.

Также «пустой» для столбца varchar также означает, что он содержит пустую строку (''), поэтому вам также нужно позаботиться об этом в предложении where (что вам не нужно делать, если вы храните даты в надлежащем date колонке)

select to_char(to_date(mydate, 'YYYY-MM-DD'), 'FMDay FMDD FMMonth FMYYYY') 
from my_table 
where mydate is not null 
    and mydate <> '' --<< exclude empty strings as well 
limit 10; 

Как ваши ценности уже находятся в формате ISO, вы можете сократить это немного с помощью:

to_char(mydate::date, 'FMDay FMDD FMMonth FMYYYY') 

Но вы должны не даты магазина в колонке varchar. Его следует хранить в столбце DATE.

Смежные вопросы