sql - 无法比较 to_char(timestamp, 'day') = 'monday'
问题描述
在 PostgreSQL 数据库中,我有一个表 payment ,其列 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。第二个查询有什么问题?
解决方案
Postgres 文档说“完整的小写日期名称(空白填充到 9 个字符)”
这个选择可以解决问题吗?如果有尾随空格,则您的比较可能会失败。
SELECT COUNT(*)
FROM payment
WHERE RTRIM(TO_CHAR(payment_date, 'day')) = 'monday';
推荐阅读
- android - 无法在 RecyclerView.Adapter 类 Kotlin 中获取 ViewModel 实例
- php - 如何按 column_name 排序,计算字符串的数量
- c# - How can I use the data from one ViewController to another in order to expand the first ViewController's information?
- radio-button - 有没有办法访问由 Google App Maker 中的单选按钮小部件选择的记录字段?
- java - 循环的 Junit 测试
- google-bigquery - 导出自动检测架构
- dialogflow-es - 模拟器中的帐户链接不再可用?
- php - SQL 错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法
- r - R: Group_by function is not aggregating data correctly with sum & max/min date
- ios - 核心数据多对多逆向关系