Sql server Sql查询以查找日期之间的名称

Sql server Sql查询以查找日期之间的名称,sql-server,Sql Server,我有一张叫Emp的桌子。其中有3列名称、LastWorkingDay、LeaveValue、DateofReturn。我希望编写一个查询,以便: 最后一个工作日和返回日期介于当前整周之间 我的表格应返回“2016-10-10”和“2016-10-16”之间的值,即当前整周。因此,只应删除前2条记录,并显示最后3条记录 SELECT [Name] ,[Last_Working_Day] ,[Date_of_Return] ,[LeaveValue] ,NewWeekStatu

我有一张叫Emp的桌子。其中有3列名称、LastWorkingDay、LeaveValue、DateofReturn。我希望编写一个查询,以便:

  • 最后一个工作日和返回日期介于当前整周之间

我的表格应返回“2016-10-10”和“2016-10-16”之间的值,即当前整周。因此,只应删除前2条记录,并显示最后3条记录

SELECT [Name]
  ,[Last_Working_Day]
  ,[Date_of_Return]
  ,[LeaveValue]
  ,NewWeekStatus
  FROM [Emp]
  INNER JOIN [Date]
  ON [Emp].Last_Working_Day = [Date].FullDate

  WHERE [Date].NewWeekStatus = 'Current Full Week'

我如何才能做到这一点?

您需要首先了解当前的第一天和最后一天,如下所示

 Declare @StartWeek AS datetime, @EndWeek AS datetime
 select  @StartWeek=     DATEADD(week, DATEDIFF(day, 0, getdate())/7, 0)
 select   @EndWeek  = DATEADD(week, DATEDIFF(day, 0, getdate())/7, 6)
然后您可以在查询中使用这两个日期

SELECT [Name]
  ,[Last_Working_Day]
  ,[Date_of_Return]
  ,[LeaveValue]
  ,NewWeekStatus
  FROM [Emp]
  INNER JOIN [Date]
  ON [Emp].Last_Working_Day = [Date].FullDate
  WHERE [Date].NewWeekStatus = 'Current Full Week'
  AND [Emp].Last_Working_Day BETWEEN @StartWeek  AND @EndWeek
  AND [Emp].Date_of_Return BETWEEN @StartWeek  AND @EndWeek
然而,你的欲望产出需要在上周考虑,而不是当前的一周。

< P>看看这个:

SELECT [Name]
  ,[Last_Working_Day]
  ,[Date_of_Return]
  ,[LeaveValue]
  ,NewWeekStatus
  FROM [Emp]
  INNER JOIN [Date]
  ON [Emp].Last_Working_Day = [Date].FullDate
  WHERE [Date].NewWeekStatus = 'Current Full Week' and (Date_of_return>='2016-10-10' and Date_of_return<='2016-10-16')
选择[名称]
,[最后一个工作日]
,[申报日期]
,[LeaveValue]
,NewWeekStatus
来自[Emp]
内部联接[日期]
在[Emp]上。最后一个工作日=[Date]。完整日期

其中[Date].NewWeekStatus='Current Full Week'和(Date\u of_return>='2016-10-10'和Date\u of_return什么是
NewWeekStatus
?FullDate表中只有一列,其中包括当前整周的日期,即10-10-16到16-10-16您所指的是什么“FullDate表中只有一列包含当前整周的日期,即10-10-16到16-10-16”?该列的数据类型是什么
varchar
datetime
datetime2
??在您提问时添加所有详细信息。@Shivang添加表数据和预期输出。