使用具有不同数据类型的 COALESCE?
Using COALESCE with different data types?
我有一个使用 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
)
时,现在它是 return 完整的时间戳
如何仅使用 COALESCE 和 return 时间戳的日期部分?
您可以使用 to_char 使用适当的格式掩码转换时间戳:
COALESCE(to_char(timestamp_type, 'YYYY-MM-DD'), varchar_col)
正确的转换是
COALESCE(timestamp_type::date::text,char_var)
如果您有 ISO 日期样式,这应该会如您所愿地工作...。但是最好不要依赖 datestyle 设置来转换日期时间 to/from 文本。因此,@Gurwinder Singh 的回答是必经之路。
我有一个使用 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 和 return 时间戳的日期部分?
您可以使用 to_char 使用适当的格式掩码转换时间戳:
COALESCE(to_char(timestamp_type, 'YYYY-MM-DD'), varchar_col)
正确的转换是
COALESCE(timestamp_type::date::text,char_var)
如果您有 ISO 日期样式,这应该会如您所愿地工作...。但是最好不要依赖 datestyle 设置来转换日期时间 to/from 文本。因此,@Gurwinder Singh 的回答是必经之路。