如何查找两天之间的数据但不包括周末的数据

Posted

技术标签:

【中文标题】如何查找两天之间的数据但不包括周末的数据【英文标题】:How to find data between two days BUT excluding the data in the weekends 【发布时间】:2014-12-18 07:42:31 【问题描述】:

我想查找两个日期之间的数据(例如 8 月份的用户注册),但只查找工作日期间注册的数据,我想排除周末的数据。

注意:我在 *** 上发现了类似的问题,但它们都计算了两个日期之间的天数,不包括周末。我想搜索两个日期之间的数据,但仅限于工作日。我的数据表中有一个时间戳,但我不知道如何进行 SQL 查询来识别时间戳是工作日还是周末。

【问题讨论】:

您标记了 mysql 和 sql-server,请澄清。 【参考方案1】:

您可以使用dayofweek 函数排除周末:

SELECT *
FROM   users
WHERE  register_date BETWEEN '2014-08-01' AND '2014-09-01' AND
       DAYOFWEEK(registerdate) NOT IN (1, 7)

但是,请注意,如果您要查找 8 月注册的用户,使用 month 函数而不是 between 运算符可能更容易:

SELECT *
FROM   users
WHERE  MONTH(register_date) = 8 AND
       DAYOFWEEK(registerdate) NOT IN (1, 7)

【讨论】:

DATEOFWEEK 未被识别,因此我使用了 DATEPART(DW,时间戳)不在 (1, 7) 中。什么不在 (1,7) 中是什么意思??? dateofweek 不是一个函数——它是**day**ofweek,正如我所写的(正如你所指出的,这只是datepart 之上的一个语法糖)。 dayofweek 函数返回一个数字表示它在一周中的哪一天 - 星期日是 1,星期六是 7。因此,如果将它们都排除在外,您将排除周末。

以上是关于如何查找两天之间的数据但不包括周末的数据的主要内容,如果未能解决你的问题,请参考以下文章

如何计算日期但不包括微软访问中的周末?

如何使用 moment.js 添加天数,不包括周末?

如何识别从今天到过去和未来(不包括周末)的三个工作日,并将它们放入熊猫数据框中?

Impala 获得 2 个日期之间的差异,不包括周末

获取两个日期之间的天数,不包括周末

两个时间戳系列之间的营业时间,不包括周末和节假日