首页 > 解决方案 > 如何将日期更改为 DD/MM/YYY 格式,然后使用 postgresql 更改为文本?

问题描述

select
    dt.client_id,
    dt.user_id,,
    CAST(DATE(dt.created_on) AS TEXT) as created_on,
    dt.created_by,
    dt.last_update_on,
    dt.last_update_by
from
    draft dt
where
    dt.user_id = 'ABC'
    and CAST(DATE(dt.created_on) AS TEXT) LIKE LOWER('%2020-10-30%')

这里 created_on 是日期时间列,需要先格式化为 YYYY-MM-DD 格式,然后需要转换为文本

标签: sqlpostgresqldatetime

解决方案


要格式化值,我们to_char()

to_char(dt.created_on, 'yyyy-mm-dd') as created_on

但是您不应该将 LIKE 用于 DATE(或 TIMESTAMP)值。

假设created_on是 a ( Postgrestimestamp中没有数据类型),您可以将其转换为 a以将其与值进行比较:datetimedatedate

where cast(dt.created_on as date) = date '2020-10-30'

出于性能原因,在列上使用范围条件timestamp可能会更好,如果它被索引:

where dt.created_on >= date '2020-10-30' 
  and dt.created_on < date '2020-10-30' + 1

推荐阅读