# 取得指定日期區間及星期幾
###### tags: `SQL`
## 語法 ( 已包含註解就不再另外打說明 )
```
SELECT
-- 用來作為加幾天的數字,從 master..spt_values 系統資料表獲得,number 最高到 2047,所以最多只能撈到 5 年的範圍區間喔
number,
-- DATEADD 日期的相加,參數說明:DD = 被加的單位, number = 加幾天
DATEADD(dd, number, '2017-06-13') AS DATEADD,
convert(char(10), DATEADD(dd, number, '2017-06-13'),120) AS DATE,
-- DATEDIFF 日期的差異比對,參數說明:HH = 差幾小時, 指定日期(區間), 欲比較的日期
DATEDIFF(HH,DATEADD(dd, number, '2017-06-13'),'2017-06-17') AS DATEDIFF,
-- DATEPART 取得指定日期部分的整數,參數說明: DW = weekday(星期幾) 1 為星期日、2 為星期一..., 指定日期(區間)
DATEPART(DW, DATEADD(dd, number, '2017-06-13')) AS WEEKDATE
FROM
-- 系統資料表
master..spt_values
WHERE
-- 只是用來取 Type 為 P 的 number
type = 'P'
-- 取得指定的日期區間的日期 ( 差異比對 0 ~ 正整數 的值 )
AND DATEDIFF(HH,DATEADD(dd, number, '2017-06-13'),'2017-06-17') >= 0
```
## 結果

## 特別說明 DATEDIFF(HH,DATEADD(dd, number, '2017-06-13'),'2017-06-17') >= 0 這個條件
* 若 >0 取得有差異且為正整數的值
* 若 >=0 取得無差異 & 有差異且為正整數的值
看看若沒有此條件的話會出現甚麼結果

出現了其他為負數的日期,那些日期不在我們查詢的區間中