查询很简单,但没有按照我想要的方式运行, 我正在尝试检查我检查的日期是否是我检查的正确日期。
输入
SELECT TO_CHAR(date '1982.03.09', 'DAY'),
(CASE When lower(TO_CHAR(date '1982.03.09', 'DAY')) like lower('TUESDAY')
then 1 else 0 end)
输出
案例陈述的答案应该是 1。 我添加了 lower 以检查它是否必须使用大写字母
原因
我之所以用case语句是因为当一个学生周一有课后事件时,我想在表中放置1或0,并计算周一有多少学生有课后事件的总和等等.
最终需要
我这样做是为了创建一个每周表,其中包含每天进行课后事件的 child 人数。
如能提供有关修复我的查询的任何帮助,我们将不胜感激! 谢谢
最佳答案
无论出于何种原因,TUESDAY
to_char()
生成的后面都有空格。你可以 trim()
把它们去掉。但是,与其依赖字符串表示(当语言环境发生变化时可能会发生变化),不如使用 extract()
以数字表示形式获取星期几,0
星期天,1
星期一等等。
SELECT to_char(DATE '1982.03.09', 'DAY'),
CASE
WHEN trim(to_char(DATE '1982.03.09', 'DAY')) = 'TUESDAY' THEN
1
ELSE
0
END,
CASE extract(dow FROM DATE '1982.03.09')
WHEN 2 THEN
1
ELSE
0
END;
关于sql - 将日期转换为工作日然后关联并求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54419608/