Quero selecionar sql
SELECT "year-month" from table group by "year-month" AND order by date
:, onde ano-mês - formato para a data "1978-01", "1923-12".
selecione to_char de couse work , mas não a ordem "certa":
to_char(timestamp_column, 'YYYY-MM')
Quero selecionar sql
SELECT "year-month" from table group by "year-month" AND order by date
:, onde ano-mês - formato para a data "1978-01", "1923-12".
selecione to_char de couse work , mas não a ordem "certa":
to_char(timestamp_column, 'YYYY-MM')
Respostas:
date_part(text, timestamp)
por exemplo
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')
Você diz que o pedido não está "certo", mas não consigo ver por que está errado (pelo menos até chegar o ano 10000).
ORDER BY
namorar.
ORDER BY to_char(timestamp, 'YYYY-MM')
. Ou, alternativamente, se você fez, SELECT to_char(timestamp, 'YYYY-MM') AS date
você pode simplesmente usar ORDER BY date
.
Use o date_trunc
método para truncar o dia (ou qualquer outra coisa que você quiser, por exemplo, semana, ano, dia, etc.)
Exemplo de agrupamento de vendas de pedidos por mês:
select
SUM(amount) as sales,
date_trunc('month', created_at) as date
from orders
group by date
order by date DESC;
Você pode truncar todas as informações após o mês usando date_trunc(text, timestamp)
:
select date_trunc('month',created_at)::date as date
from orders
order by date DESC;
created_at = '2019-12-16 18:28:13'
Produto 1:
date_trunc('day',created_at)
// 2019-12-16 00:00:00
Produto 2:
date_trunc('day',created_at)::date
// 2019-12-16
Produto 3:
date_trunc('month',created_at)::date
// 2019-12-01
Produto 4:
date_trunc('year',created_at)::date
// 2019-01-01
1ª Opção
date_trunc('month', timestamp_column)::date
Ele manterá o formato de data com todos os meses começando no primeiro dia.
Exemplo:
2016-08-01
2016-09-01
2016-10-01
2016-11-01
2016-12-01
2017-01-01
2ª Opção
to_char(timestamp_column, 'YYYY-MM')
Esta solução proposta por @yairchu funcionou bem no meu caso. Eu realmente queria descartar as informações do 'dia'.
Você pode usar a função EXTRACT pgSQL
EX- date = 1981-05-31
EXTRACT(MONTH FROM date)
it will Give 05
Para mais detalhes PGSQL Data-Hora
Ele está trabalhando para funções "maiores que" e não por menos que.
Por exemplo:
select date_part('year',txndt)
from "table_name"
where date_part('year',txndt) > '2000' limit 10;
está funcionando bem.
mas pelo
select date_part('year',txndt)
from "table_name"
where date_part('year',txndt) < '2000' limit 10;
Estou recebendo um erro.