sql - 从付款日期栏开始,星期一发生了多少笔付款?下面的代码给我零计数

标签 sql postgresql

SELECT COUNT(*)
FROM payment
WHERE(TO_CHAR(payment_date, 'Day')) = 'Monday'

最佳答案

TO_CHAR(payment_date, 'Day') 返回一个用空格填充的字符串 ('Monday ')。

要抑制空格,请使用 FM 修饰符(“填充模式”)

SELECT COUNT(*)
FROM payment
WHERE (TO_CHAR(payment_date, 'FMDay')) = 'Monday'

或者显式使用 trim()

SELECT COUNT(*)
FROM payment
WHERE (trim(TO_CHAR(payment_date, 'Day'))) = 'Monday'

但是,我建议不要使用特定于语言环境的值(在我的计算机上,上面的值总是返回 0,因为我有不同的语言设置)。

使用数字,例如使用 extract(isodow from ..) 更可靠。

关于sql - 从付款日期栏开始,星期一发生了多少笔付款?下面的代码给我零计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62540961/

相关文章:

php - fatal error : Uncaught exception 'PDOException' with 2 queries

spring - 如果在运行 spring boot 应用程序时不存在 Postgres 数据库,则创建它

sql - 在单个查询中从多个表中查找数据

jquery - 加载时出现客户端验证错误的 rails form_for

mysql - 无法使用 mysql 在具有外键的表中插入数据

SQL Server 的 ISNUMERIC 函数

sql - 缓慢的 Informix COUNT/GROUP BY 查询,即使有适当的索引

sql - 如何将 PostgreSQL hstore 列转换为一行?

sql - 如何在 json 字段类型 postgresql 中查询空值?

java - SQLite 外键约束