Postgres中的格式化日期

时间:2016-02-23 09:35:43

标签: postgresql date-format

我有一个表格,其中mydate以YYYY-MM-DD格式存储在字符变化列中。此列中的某些行对于此列为空。我想格式化日期如下:

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...

为什么会这样。

1 个答案:

答案 0 :(得分:0)

您需要先将varchar值转换为日期值,以便将其转换回格式化的varchar。

您需要删除列名前面的date关键字。仅当您编写日期常量(“文字”)时才需要date关键字,而不是在引用列时。

varchar列cal的“空”也意味着它包含一个空字符串(''),所以你还需要在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列中。