Je veux sélectionner sql: SELECT "year-month" from table group by "year-month" AND order by date
, où année-mois – format pour la date “1978-01”, “1923-12”. sélectionnez to_char de couse work, mais pas “right” order.
date_part (texte, horodatage)
http://www.postgresql.org/docs/8.0/interactive/functions-datetime.html
to_char(timestamp, 'YYYY-MM')
Vous dites que l’ordre n’est pas “correct”, mais je ne vois pas pourquoi c’est faux (du moins jusqu’à l’an 10000).
Utilisez la méthode date_trunc
pour tronquer le jour (ou autre chose que vous voulez, par exemple, semaine, année, jour, etc.)
Exemple de regroupement des ventes des commandes par mois:
select SUM(amount) as sales, date_trunc('month', created_at) as date from orders group by date order by date DESC;
Vous pouvez tronquer toutes les informations après le mois en utilisant date_trunc(text, timestamp)
:
select date_trunc('month',created_at)::date as date from orders order by date DESC;
Vous pouvez utiliser la fonction EXTRACT pgSQL
EX- date = 1981-05-31 EXTRACT(MONTH FROM date) it will Give 05
Pour plus de détails PGSQL Date-Time
1ère option
date_trunc('month', timestamp_column)::date
Il maintiendra le format de la date avec tous les mois commençant au premier jour.
Exemple:
2016-08-01 2016-09-01 2016-10-01 2016-11-01 2016-12-01 2017-01-01
2ème option
to_char(timestamp_column, 'YYYY-MM')
Cette solution proposée par @yairchu a bien fonctionné dans mon cas. Je voulais vraiment jeter les infos du jour.