我如何才能从数据集中只显示整整几周?因此,如果我的一周从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