sql - 如何将日期更改为 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 格式,然后需要转换为文本
解决方案
要格式化值,我们to_char()
:
to_char(dt.created_on, 'yyyy-mm-dd') as created_on
但是您不应该将 LIKE 用于 DATE(或 TIMESTAMP)值。
假设created_on
是 a ( Postgrestimestamp
中没有数据类型),您可以将其转换为 a以将其与值进行比较:datetime
date
date
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
推荐阅读
- python - python中SQLite3中的指数
- elasticsearch - 如何在logstash中有日期字段的特定日期?
- android - Appium - 在浏览器中打开
- javascript - 具有动态导入的主机应用程序
- odoo - res.user中res.partner的create函数是怎么调用的?
- angular - 将 Swagger 编辑器添加到 Angular 项目
- c# - 如何修复 iis 上的 asp core mvc 部署
- scikit-learn - xgboost“适合”功能是否允许继续训练?
- regex - 匹配由包含模式的换行符包围的文本块
- excel - 我的 if 语句是健壮的。我怎样才能使它更紧凑?