我有一个使用COALESCE(timestamp_type::date,charachter_varying)
的查询因数据类型不匹配而失败:
错误:COALESCE类型日期和字符变化无法匹配
如果我将时间戳转换为text
:
COALESCE(timestamp_type::text,charachter_varying)
但是,现在它只返回完整时间戳,我只需要YYYY-MM-DD
(而不是完整时间戳,YYYY-MM-DD HH:MM:SS.000000+00
)
如何使用COALESCE 和仅返回时间戳的日期部分?
答案 0 :(得分:4)
您可以使用to_char来使用适当的格式掩码转换时间戳:
COALESCE(to_char(timestamp_type, 'YYYY-MM-DD'), varchar_col)
答案 1 :(得分:2)
正确的施法是
COALESCE(timestamp_type::date::text,char_var)
如果您有ISO日期风格,这应该按预期工作。但是,不依赖日期风格设置将日期时间转换为文本或从文本转换是非常好的。因此,@ Gurwinder Singh的回答是要走的路。