如何在PostgreSQL中提取年月日?

我想selectsql: SELECT "year-month" from table group by "year-month" AND order by date ,其中year-month – 格式为date“1978-01”,“1923-12”。 selectcouse工作的to_char,但不是“正确”的顺序。

 to_char(timestamp, 'YYYY-MM') 

你说这个命令不是“正确的”,但是我不明白为什么它是错误的(至less在一万年之前)。

使用date_trunc方法截断当天(或者其他任何你想要的,例如,周,年,日等)。

按月订单分组销售的示例:

 select SUM(amount) as sales, date_trunc('month', created_at) as date from orders group by date order by date DESC; 

您可以使用date_trunc(text, timestamp)截断一个月后的所有信息:

 select date_trunc('month',created_at)::date as date from orders order by date DESC; 

第一个选项

 date_trunc('month', timestamp_column)::date 

它将保持所有月份从第一天开始的date格式。

例:

 2016-08-01 2016-09-01 2016-10-01 2016-11-01 2016-12-01 2017-01-01 

第二个选项

 to_char(timestamp_column, 'YYYY-MM') 

@yairchu提出的解决scheme在我的情况下工作得很好。 我真的想放弃'一天'的信息。