无法比较 to_char(timestamp, 'day') = 'monday'
Posted
技术标签:
【中文标题】无法比较 to_char(timestamp, \'day\') = \'monday\'【英文标题】:Trouble comparing to_char(timestamp, 'day') = 'monday'无法比较 to_char(timestamp, 'day') = 'monday' 【发布时间】:2020-03-28 20:28:35 【问题描述】:在 PostgreSQL 数据库中,我有一个表支付,其中包含时间戳类型的列 payment_date。我的目标是计算周一支付的款项。以下查询:
SELECT TO_CHAR(payment_date, 'day') FROM payment;
给出如下结果:
thursday
friday
friday
monday
tuesday
但是,当我尝试这样计算星期一时:
SELECT COUNT(*) FROM payment
WHERE TO_CHAR(payment_date, 'day') = 'monday';
结果为 0,即使前面的查询显示它应该大于 0。 第二个查询有什么问题?
【问题讨论】:
【参考方案1】:Postgres 文档说“完整的小写日期名称(空白填充到 9 个字符)”
这个选择可以解决问题吗?如果有尾随空格,则可能您的比较失败。
SELECT COUNT(*)
FROM payment
WHERE RTRIM(TO_CHAR(payment_date, 'day')) = 'monday';
【讨论】:
@AleksandraStępniak:或者你可以使用to_char(payment_date, 'FMday')
- FM 修饰符也会删除空白以上是关于无法比较 to_char(timestamp, 'day') = 'monday'的主要内容,如果未能解决你的问题,请参考以下文章