Je veux sélectionner sql: SELECT "year-month" from table group by "year-month" AND order by date
, où année-mois - format de la date "1978-01", "1923-12". sélectionnez to_char of couse work, mais pas le "bon" ordre:
to_char(timestamp_column, 'YYYY-MM')
date_part(text, timestamp)
par exemple.
date_part('month', timestamp '2001-02-16 20:38:40'),
date_part('year', timestamp '2001-02-16 20:38:40')
http://www.postgresql.org/docs/8.0/interactive/functions-datetime.html
to_char(timestamp, 'YYYY-MM')
Vous dites que la commande n'est pas "correcte", mais je ne vois pas pourquoi elle est fausse (au moins jusqu'à l'année 10000).
Utilisez le date_trunc
méthode pour tronquer la journée (ou tout ce que vous voulez, par exemple semaine, année, jour, etc.)
Exemple de regroupement des ventes à partir de 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;
1ère option
date_trunc('month', timestamp_column)::date
Il conservera le format de date avec tous les mois à partir du 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 me débarrasser des infos du jour.
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
Il travaille pour "supérieur à" fonctions pas pour moins que.
Par exemple:
select date_part('year',txndt)
from "table_name"
where date_part('year',txndt) > '2000' limit 10;
fonctionne bien.
mais pour
select date_part('year',txndt)
from "table_name"
where date_part('year',txndt) < '2000' limit 10;
Je reçois une erreur.