Tôi muốn chọn sql :
SELECT "year-month" from table group by "year-month" AND order by date, trong đó năm-tháng - định dạng cho ngày "1978-01", "1923-12".
select to_char of couse work , but not "right" order:
to_char(timestamp_column, 'YYYY-MM')
Tôi muốn chọn sql :
SELECT "year-month" from table group by "year-month" AND order by date, trong đó năm-tháng - định dạng cho ngày "1978-01", "1923-12".
select to_char of couse work , but not "right" order:
to_char(timestamp_column, 'YYYY-MM')
Câu trả lời:
date_part(text, timestamp)
ví dụ
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')
Bạn nói rằng thứ tự không "đúng", nhưng tôi không thể hiểu tại sao nó lại sai (ít nhất là cho đến năm 10000).
ORDER BYhẹn hò.
ORDER BY to_char(timestamp, 'YYYY-MM'). Hoặc nếu bạn đã làm, SELECT to_char(timestamp, 'YYYY-MM') AS datebạn có thể chỉ cần sử dụng ORDER BY date.
Sử dụng date_truncphương pháp để cắt bớt ngày (hoặc bất kỳ thứ gì khác mà bạn muốn, ví dụ: tuần, năm, ngày, v.v.)
Ví dụ về nhóm doanh thu từ các đơn đặt hàng theo tháng:
select
SUM(amount) as sales,
date_trunc('month', created_at) as date
from orders
group by date
order by date DESC;
Bạn có thể cắt ngắn tất cả thông tin sau tháng bằng cách sử dụng 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'
Đầu ra 1:
date_trunc('day',created_at)
// 2019-12-16 00:00:00
Đầu ra 2:
date_trunc('day',created_at)::date
// 2019-12-16
Đầu ra 3:
date_trunc('month',created_at)::date
// 2019-12-01
Đầu ra 4:
date_trunc('year',created_at)::date
// 2019-01-01
Lựa chọn đầu tiên
date_trunc('month', timestamp_column)::date
Nó sẽ duy trì định dạng ngày với tất cả các tháng bắt đầu từ ngày đầu tiên.
Thí dụ:
2016-08-01
2016-09-01
2016-10-01
2016-11-01
2016-12-01
2017-01-01
Lựa chọn thứ 2
to_char(timestamp_column, 'YYYY-MM')
Giải pháp này do @yairchu đề xuất đã hoạt động tốt trong trường hợp của tôi. Tôi thực sự muốn loại bỏ thông tin 'ngày'.
Bạn có thể sử dụng hàm EXTRACT pgSQL
EX- date = 1981-05-31
EXTRACT(MONTH FROM date)
it will Give 05
Để biết thêm chi tiết Ngày-giờ PGSQL
Nó đang hoạt động cho các chức năng "lớn hơn" không phải cho ít hơn.
Ví dụ:
select date_part('year',txndt)
from "table_name"
where date_part('year',txndt) > '2000' limit 10;
đang hoạt động tốt.
nhưng cho
select date_part('year',txndt)
from "table_name"
where date_part('year',txndt) < '2000' limit 10;
Tôi đang nhận lỗi.