我在PostgreSQL中遇到了case语句的问题。这里我想把月份(数字)的输出改为文本,比如January,February等
select
date_part('month', tanggal) bulan,
case
when date_part('month', tanggal)= 1 then 'January'
when date_part('month', tanggal) = 2 then 'February'
when date_part('month', tanggal) = 3 then 'March'
when date_part('month', tanggal) = 4 then 'April'
when date_part('month', tanggal) = 5 then 'May'
when date_part('month', tanggal) = 6 then 'June'
when date_part('month', tanggal) = 7 then 'July'
when date_part('month', tanggal) = 8 then 'August'
when date_part('month', tanggal) = 9 then 'September'
when date_part('month', tanggal) = 10 then 'October'
when date_part('month', tanggal) = 11 then 'November'
when date_part('month', tanggal) = 12 then 'December'
else date_part('month', tanggal)
end as namabulan
但是,我得到的是这样一个错误
ERROR: invalid input syntax for type double precision: "Januari"
LINE 4: when date_part('month', tanggal)= 1 then 'Januari'
^
我尝试在case语句'January'中使用更改的数据类型,但我得到了一个错误,该语句不匹配双精度。
2条答案
按热度按时间6g8kf2rb1#
这些文字都具有类型'unknown',让ELSE来确定CASE的返回类型。但是文字不能被解释为那种类型。
niknxzdl2#
这将返回没有CASE语句的月份名称:
请参阅:DBFIDDLE,它还展示了如何修复CASE语句中的问题。
和postgresql的文档:完整的大小写混合月份名称(空白填充为9个字符)
注意:如果不需要9个字符,可以使用rtrim()