Подтвердить что ты не робот

Как извлечь год и месяц от даты в PostgreSQL без использования функции to_char()?

Я хочу выбрать sql: SELECT "year-month" from table group by "year-month" AND order by date, где год-месяц - формат даты "1978-01", "1923-12". выберите to_char из couse work, но не "правильный" порядок:

to_char(timestamp_column, 'YYYY-MM')
4b9b3361

Ответ 2

to_char(timestamp, 'YYYY-MM')

Вы говорите, что заказ не "правильный", но я не понимаю, почему он ошибается (по крайней мере, до 10000 года).

Ответ 3

Используйте метод date_trunc для усечения дня (или того, что вы хотите, например, неделя, год, день и т.д.)

Пример группировки продаж из заказов по месяцам:

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

Ответ 4

Вы можете обрезать всю информацию после месяца, используя date_trunc(text, timestamp):

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

Ответ 5

1-й вариант

date_trunc('month', timestamp_column)::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, отлично работало в моем случае. Я действительно хотел отказаться от информации о "день".

Ответ 6

Вы можете использовать функцию EXTRACT pgSQL

EX- date = 1981-05-31
EXTRACT(MONTH FROM date)
it will Give 05

Для более подробной информации PGSQL Date-Time

Ответ 7

Он работает для функций "больше чем", а не для менее.

Например:

select date_part('year',txndt)
from "table_name"
where date_part('year',txndt) > '2000' limit 10;

работает нормально.

но для

select date_part('year',txndt)
from "table_name"
where date_part('year',txndt) < '2000' limit 10;

Я получаю ошибку.