使用不同数据类型的COALESCE?

时间:2017-05-10 17:34:08

标签: sql postgresql type-conversion coalesce

我有一个使用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 仅返回时间戳的日期部分?

2 个答案:

答案 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的回答是要走的路。