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 BY
hẹn hò.
ORDER BY to_char(timestamp, 'YYYY-MM')
. Hoặc nếu bạn đã làm, SELECT to_char(timestamp, 'YYYY-MM') AS date
bạn có thể chỉ cần sử dụng ORDER BY date
.
Sử dụng date_trunc
phươ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.