两个不同列中日期之间的 SQL COUNT

Posted

技术标签:

【中文标题】两个不同列中日期之间的 SQL COUNT【英文标题】:SQL COUNT between dates in two different column 【发布时间】:2013-05-05 11:56:43 【问题描述】:

假设我们有这张表:

STUDENT |  START  | END
1       |1998-1-1 |2001-1-1
2       |1999-1-1 |2001-1-1
3       |2000-1-1 |2004-1-1
4       |2000-1-1 | NULL

我想做的是:

计算开始日期和结束日期之间的学生人数!

【问题讨论】:

“日期之间”是什么意思?您的意思是给定日期在开始和结束之间,还是给定日期范围“重叠”开始和结束?还是别的什么? 我想要计算在日期之间开始的学生和在日期之间结束学习的学生的 sql。 【参考方案1】:

看来您需要使用基本的COUNT 聚合:

SELECT COUNT(Student)
FROM YourTable
WHERE Start >= @Start 
    AND End <= @End

我在开始和结束日期字段周围分别使用了 >= 和 或

【讨论】:

【参考方案2】:

使用 between Operator 和 COUNT 聚合函数

SELECT COUNT(student) column_name(s)
FROM table_name
WHERE column_name
BETWEEN value1 AND value2

Between 可以与文本一起使用,因此在值所在的位置插入日期,

如果您仍然不明白,请在此处阅读更多内容

编辑:应该可以,对错误感到抱歉

http://www.w3schools.com/sql/sql_between.asp

【讨论】:

OP 想要的是Count number of students between start and end dates。您的答案只是返回一组行。

以上是关于两个不同列中日期之间的 SQL COUNT的主要内容,如果未能解决你的问题,请参考以下文章

SQL 查询日期范围保存在 2 列中

从 2 个 REF 列中获取两个日期之间的差异

有没有更好的方法来编写这个处理比较两个不同列中的日期的 Oracle SQL?

SQL查询获取特定日期和列中最新日期之间的数据

在 SQL 中计算不同日期之间 sum() 的差异

计算同一列中两个日期之间的日期