Tôi có một bảng có một cột month
(integer
). Trong cột này, tôi lưu trữ các giá trị như 1, 2, .. 12
.
Nhưng tôi phải hiển thị tháng tên.Lấy tên tháng từ số trong PostgreSQL
Ví dụ: Nếu giá trị là 1
Tôi cần hiển thị jan
.
Tôi có một bảng có một cột month
(integer
). Trong cột này, tôi lưu trữ các giá trị như 1, 2, .. 12
.
Nhưng tôi phải hiển thị tháng tên.Lấy tên tháng từ số trong PostgreSQL
Ví dụ: Nếu giá trị là 1
Tôi cần hiển thị jan
.
Về cơ bản những gì @small_duck đã đăng, nhưng một vài cải tiến:
SELECT to_char(to_timestamp (4::text, 'MM'), 'TMmon')
Một dàn diễn viên đồng bằng văn bản 4::text
là đủ, không cần to_char(..)
.
Câu hỏi yêu cầu chữ thường "jan", có template pattern cho điều đó: mon
.
Nếu bạn muốn bản địa hóa đầu ra, hãy đặt tiền tố mẫu với modifierTM
.
Có thể có một câu trả lời nhanh hơn, nhưng nó có vẻ là có thể bằng cách:
Ví dụ:
select to_char(to_timestamp(to_char(4, '999'), 'MM'), 'Mon')
lợi nhuận 'Tháng Tư'.
Bạn có thể biến nó thành một chức năng:
create function to_month(integer) returns varchar as
$$
select to_char(to_timestamp(to_char($1, '999'), 'MM'), 'Mon');
$$ language sql
và sử dụng nó trong suốt mã của bạn.
select to_month(month_column) from mytable
Cảm ơn ngài .. Nó hoạt động tốt. – user007
Hey - bất kỳ ý tưởng nào tại sao việc triển khai rất giống nhau sẽ gặp khó khăn khi diễn giải toàn bộ tên tháng một cách chính xác? NĂM (DM.DATE) || TO_CHAR (TO_TIMESTAMP (to_char ( \t \t trường hợp \t \t \t khi \t \t \t \t tháng (DM.DATE) +1> 12 sau đó 1 \t \t \t \t tháng khác (DM.TM_DIM_KY_DTE) +1 cuối \t \t \t, '99 '),' MM '),' Mon ') Mục tiêu là có năm hiện tại cộng với một tháng sau tháng hiện tại, vì vậy tháng 11 năm 2012 sẽ là tháng 12 năm 2012 như' 2012Dec '. Vì một số lý do, một số chữ cái được trả lại dưới dạng số như Dec = 4ec hoặc Jan = 1721395an – Phill