如何计算未在目标日期运行的天数

moh*_*111 7 sql t-sql sql-server

我有这样的示例数据:

DECLARE @T Table (ID INT, Name VARCHAR(10), DOB DATE)

INSERT INTO @T (ID,Name,DOB) VALUES (1,'Mohan','2016-11-11')
INSERT INTO @T (ID,Name,DOB) VALUES (2,'Raj','2016-11-07')
INSERT INTO @T (ID,Name,DOB) VALUES (3,'Manny','2016-10-30')
INSERT INTO @T (ID,Name,DOB) VALUES (4,'kamal','2016-11-01')
INSERT INTO @T (ID,Name,DOB) VALUES (5,'Raj','2016-11-08')
INSERT INTO @T (ID,Name,DOB) VALUES (6,'Manasa','2016-11-10')
Run Code Online (Sandbox Code Playgroud)

我的问题是我周日在这张桌子上运行查询(即2016年11月6日)

例如 :

Select Count(*), Cnt  
from @T      /* how to write logic for missing days */
Run Code Online (Sandbox Code Playgroud)

我的输出:

Cnt   Days
6    0 Days 
Run Code Online (Sandbox Code Playgroud)

当我在周四(即2016年11月6日)运行它时也是如此

Cnt   Days
6     4 Days
Run Code Online (Sandbox Code Playgroud)

我怎么需要得到这个.如果它在星期六运行,它将在每个星期日运行它应该显示6天和星期日到星期日计算.

请提出一些做法的方法 - 我无法继续前进

Ben*_*eno 1

要获取自星期日以来的天数,您可以使用该DATEPART函数以整数形式获取星期几,其中星期日 = 1,星期六 = 7。因此对于本例:

SELECT COUNT(*), DATEPART(WEEKDAY, GETDATE()) - 1 
FROM @T
Run Code Online (Sandbox Code Playgroud)