You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用T-SQL获取下周周一至周五的日期?

获取下周周一至周五的T-SQL实现方案

没问题,我来帮你搞定这个需求!你的现有代码逻辑有点绕,而且没准确锁定下周的日期范围,咱们换个更直接的方式来实现。

核心思路是先算出下周周一下周周五的具体日期,然后直接从Calendar表中筛选这个区间内的记录就行——不管当前@Date是本周的哪一天,都能精准返回下周的工作日。

给你写好完整的代码:

DECLARE @Date datetime = '5/23/18';

-- 计算下周周一的日期:先找到当前日期所在周的周数,加1后得到下一周的起始(周一)
DECLARE @NextWeekMonday datetime = DATEADD(week, DATEDIFF(week, 0, @Date) + 1, 0);
-- 下周周五就是周一加4天
DECLARE @NextWeekFriday datetime = DATEADD(day, 4, @NextWeekMonday);

-- 筛选Calendar表中日期在下周周一到周五之间的记录
SELECT *
FROM Calendar
WHERE date BETWEEN @NextWeekMonday AND @NextWeekFriday;

代码解释:

  • DATEDIFF(week, 0, @Date):计算从1900年1月1日(默认是周一)到@Date的总周数,这样能确定当前日期属于第几周。
  • DATEADD(week, ..., 0):把周数加1后,再转换回具体日期,就得到了下周的周一。
  • 加4天直接得到周五,因为周一到周五刚好间隔4天(周一+0是周一,+4就是周五)。

如果你的Calendar表中date字段是date类型(不带时间),可以把变量类型改成date,这样更严谨:

DECLARE @Date date = '5/23/18';

DECLARE @NextWeekMonday date = DATEADD(week, DATEDIFF(week, 0, @Date) + 1, 0);
DECLARE @NextWeekFriday date = DATEADD(day, 4, @NextWeekMonday);

SELECT *
FROM Calendar
WHERE date BETWEEN @NextWeekMonday AND @NextWeekFriday;

测试一下你给的示例:当@Date是5/21/18(周一)、5/22/18(周二)、5/23/18(周三)、5/24/18(周四)时,这段代码都会返回5/28/18(周一)到6/1/18(周五)的日期,完全符合你的需求。

内容的提问来源于stack exchange,提问作者cmpmd2

火山引擎 最新活动