仅显示完整的周数-SQL



我如何才能从数据集中只显示整整几周?因此,如果我的一周从8月1日星期一开始到14日,那将被视为整整一周。而8号开始的那场比赛被认为是一半,我不想展示它。

非常感谢!

表名:RRA日期栏:系列日期

  • 我的答案假设您希望在一周中选择seriesdate值所在的行,而不是当前周
  • 假设您的seriesdate列已编入索引,则实现此筛选器的一种SARGable(即快速(方法是仅排除日期在当前周开始之后的行。就像这样
  • 此外。。。
    • 请注意,CURRENT_TIMESTAMP(相当于SQL Server的GETDATE()的ISO SQL(使用数据库服务器的本地时区,该时区可能不是数据使用的时区。
      • 如果是,请将DECLARE @now datetime2(7) = CURRENT_TIMESTAMP;替换为类似DECLARE @now datetime2(7) = '2022-08-10 12:34:56';的日期/时间文字
      • 请注意,大多数SQL Server设置将默认为DATEFIRST 7(星期日(
SET DATEFIRST 1; -- https://learn.microsoft.com/en-us/sql/t-sql/statements/set-datefirst-transact-sql
DECLARE @now datetime2(7) = CURRENT_TIMESTAMP; -- or '2022-08-10 12:34:56'
-- https://stackoverflow.com/questions/7168874/get-first-day-of-week-in-sql-server
DECLARE @startOfThisWeek date = DATEADD( day, 1 - DATEPART( weekeday, @now ), @now );
SELECT
q.*
FROM
[RRA] AS q
WHERE
q.[seriesdate] < @startOfThisWeek

最新更新