2016-11-10 83 views
0

我有这样如何从周一获得的数据到今天的日期

DECLARE @T Table (ID INT,Name VARCHAR(10),DOB DATE) 
INSERT INTO @T (ID,Name,DOB) VALUES (1,'Mohan','2016-11-13') 
INSERT INTO @T (ID,Name,DOB) VALUES (6,'Manasa','2016-11-10') 
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') 

查询的样本数据:

​​

在这里我无法从周一到今天的日期是指2016-我涵盖了本周即将到来的所有日期。

我想这样

ID Name DOB 
6 Manasa 2016-11-10 
5 Raj  2016-11-08 

数据表明我的最佳方式

+0

这个范围内还有另一个日期是'2016-11-07',你想显示它吗? – Viki888

+0

是的,它是样本数据,所以我们可以给它的输出,如果它在范围内 – mohan111

+0

可能的重复http://stackoverflow.com/q/7168874/1048425 – GarethD

回答

0
DECLARE @StartDate DATE = DATEADD(wk, DATEDIFF(wk,0,GETDATE()), 0),@EndDate DATE = GETDATE() SELECT * FROM @T WHERE DATEDIFF(DAY,DOB,@StartDate) <= 0 AND DATEDIFF(DAY,DOB,@EndDate) >= 0 
0

试试这个

DECLARE @T Table (ID INT,Name VARCHAR(10),DOB DATE) 
INSERT INTO @T (ID,Name,DOB) VALUES (1,'Mohan','2016-11-13') 
INSERT INTO @T (ID,Name,DOB) VALUES (6,'Manasa','2016-11-10') 
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') 


SELECT * from @T WHERE 
DOB >= DATEADD(wk, DATEDIFF(wk,0,GETDATE()), 0) 
AND DOB <= DATEADD(wk, 0,GETDATE()); 

这是给我正确的结果。

1

DATENAME()将解决您的问题。

DECLARE @T Table (ID INT,Name VARCHAR(10),DOB DATE) 
INSERT INTO @T (ID,Name,DOB) VALUES (1,'Mohan','2016-11-13') 
INSERT INTO @T (ID,Name,DOB) VALUES (6,'Manasa','2016-11-10') 
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') 

SELECT * from @T 
WHERE DATENAME(WEEK,DOB) = DATENAME(WEEK,GETDATE()) 
GO 
相关问题