提问人:nnor 提问时间:6/24/2023 最后编辑:Paul T.nnor 更新时间:6/24/2023 访问量:64
为什么 PostgreSQL 中双精度的 case 语句出错?
why case statement with double precision in postgresql error?
问:
我在PostgreSQL中的case语句中遇到了问题。在这里,我想将月份(数字)的输出更改为文本,例如 1 月、2 月等。
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”中使用更改的数据类型,但我遇到了一个错误,该语句与双精度不匹配。
答:
0赞
jjanes
6/24/2023
#1
所有文本的类型都为“unknown”,让 ELSE 确定 CASE 的返回类型。但是,文字不能被解释为属于这种类型。
0赞
Luuk
6/24/2023
#2
这将返回不带 CASE 语句的月份名称:
SELECT
current_timestamp, to_char(current_timestamp,'Month') MonthName;
请参见:DBFIDDLE,其中还显示了如何解决 CASE 语句中的问题。
和 PostgreSQL 的文档:完整的混合大小写月份名称(空白填充到 9 个字符)
注意:当您不需要 9 个字符时,您可以随时使用 rtrim()
评论
SELECT to_char(current_timestamp, 'Month')
June
)