2017-09-05 94 views
1

我想在選擇開始日期= 2017-02-01和離職日期= 2017-02-28時顯示員工離職表。輸出都顯示這樣的SQL在幾個月內找到員工離職日期

EmployeeID Leave_Start_Date Leave_End-Date 
--------- ----------------- --------------- 
1   2017-01-29  2017-02-01 
2   2017-02-01  2017-02-02 

我所要的輸出喜歡

EmployeeID Leave_Start_Date Leave_End-Date 
--------- ----------------- --------------- 
1   2017-02-01  2017-02-01 
2   2017-02-01  2017-02-02 

我寫這樣的

DECLARE @StartDate DATE 
,  @EndDate DATE    
SET  @StartDate='2017-02-01' 
SET  @EndDate='2017-02-28' 
SELECT  * 
FROM  Employee_Leave 
WHERE  Leave_Start_Date BETWEEN @StartDate AND @EndDate 
OR   Leave_End_Date BETWEEN @StartDate AND @EndDate 
ORDER BY Leave_Start_Date; 
+0

您還想截斷'start' - 'end'間隔嗎? –

回答

0

查詢我建議使用>=<=運營商和投(列名)至日期格式

示例如下:

SELECT * FROM sys.sys_config where cast(set_time as date) <= "2016-09-25" and cast(set_time as date) >= "2016-09-01" 
1

您可以使用下面的查詢:

DECLARE @StartDate DATE 
,  @EndDate DATE    
SET  @StartDate='2017-02-01' 
SET  @EndDate='2017-02-28' 

SELECT  EmployeeID, 
      CASE 
       WHEN Leave_Start_Date < @StartDate THEN @StartDate 
       ELSE Leave_Start_Date 
      END AS Leave_Start_Date, 
      CASE 
       WHEN Leave_End_Date > @EndDate THEN @EndDate 
       ELSE Leave_End_Date 
      END AS Leave_End_Date   
FROM  Employee_Leave 
WHERE  Leave_Start_Date <= @EndDate AND 
      Leave_End_Date >= @StartDate 
ORDER BY Leave_Start_Date; 

查詢截斷[Leave_Start_Date, Leave_End_Date]間隔匹配[@StartDate, @EndDate]間隔。

Demo here

相關問題