sql - 将日期转换为工作日然后关联并求和

标签 sql postgresql date

查询很简单,但没有按照我想要的方式运行, 我正在尝试检查我检查的日期是否是我检查的正确日期。

输入

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)

输出

enter image description here

案例陈述的答案应该是 1。 我添加了 lower 以检查它是否必须使用大写字母

原因

我之所以用case语句是因为当一个学生周一有课后事件时,我想在表中放置1或0,并计算周一有多少学生有课后事件的总和等等.

最终需要

enter image description here

我这样做是为了创建一个每周表,其中包含每天进行课后事件的 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/

相关文章:

MySql - 进一步查询优化SELECT WHERE IN

python - 在多个 Python worker 之间共享 Postgres 表中指定的工作

javascript - 编辑日期对象Javascript

MySQL内连接查询多表

mysql - mysql在g​​roup by子句之后还是之前选择用户定义的变量?

sql - 如何折叠 t-sql 中空值的行?

sql - 在 PostgreSQL 中恢复已删除的记录

postgresql - 将查询结果转换为 CSV

php - 选择日期大于当前日期的每个用户最近日期的行

jsf - 将 java.util.Date 拆分为两个 h :inputText fields representing hour and minute with f:convertDateTime