在“付款日期”列中,星期一发生了多少笔付款?下面的代码给我零计数

0x6upsns  于 2021-07-24  发布在  Java
关注(0)|答案(3)|浏览(300)
SELECT COUNT(*)
FROM payment
WHERE(TO_CHAR(payment_date, 'Day')) = 'Monday'
46scxncf

46scxncf1#

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 ..)` 更可靠。
zdwk9cvp

zdwk9cvp2#

也, SELECT COUNT(*) FROM payment WHERE EXTRACT(dow FROM payment_date) = 1

esbemjvw

esbemjvw3#

使用道琼斯指数(星期几)。
一周中的某一天(0-6;星期日为0)(仅适用于时间戳值)

SELECT COUNT(*)
FROM payment
WHERE EXTRACT(DOW FROM payment_date)= 1;

有关道琼斯指数的更多详情,请查看文档。

相关问题