【问题标题】:Using COALESCE with different data types?使用具有不同数据类型的 COALESCE?
【发布时间】:2017-10-09 12:04:04
【问题描述】:

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

【问题讨论】:

    标签: sql postgresql type-conversion coalesce


    【解决方案1】:

    正确的转换应该是

    COALESCE(timestamp_type::date::text,char_var)
    

    这应该可以按您的预期工作......如果您有 ISO 日期样式。但是最好不要依赖日期样式设置来将日期时间转换为文本/从文本转换。因此,@Gurwinder Singh 的答案就是要走的路。

    【讨论】:

      【解决方案2】:

      您可以使用 to_char 使用适当的格式掩码转换时间戳:

      COALESCE(to_char(timestamp_type, 'YYYY-MM-DD'), varchar_col)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-02
        相关资源
        最近更新 更多