如果您正在使用比2005年更高的SQL Server。 2008或以上的查詢將會產生日期範圍內的所有記錄。
您沒有獲取記錄,因爲您使用的是「日期時間」,其中也包含可能不會產生所有必需記錄的時間部分。但是,如果範圍僅包含日期部分,則應在比較時將其轉換爲「日期時間」或「日期」類型。
這應該工作。
DECLARE
@FromDate DATE ,
@ToDate DATE;
SELECT @FromDate = '2000-01-01',
@ToDate = '2001-01-01'
要麼
SELECT
*
FROM
@temp
WHERE
(CONVERT(DATE, ses_begin_date) >= @FromDate
AND CONVERT(DATE, ses_begin_date) <= @ToDate)
或者
SELECT
*
FROM
@temp
WHERE
(CONVERT(DATE, ses_begin_date) BETWEEN @FromDate AND @ToDate).
如果您使用的版本低於比2008年多一條路可將其轉換爲「int」刪除日期部分比作比較。即。
DECLARE
@FromDate int ,
@ToDate int;
SELECT @FromDate = CONVERT(INT, CONVERT(VARCHAR(10),'2000-01-01',112)),
@ToDate = CONVERT(INT, CONVERT(VARCHAR(10),'2001-01-01',112))
--Either
SELECT
*
FROM
@temp
WHERE
(CONVERT(INT, CONVERT(VARCHAR(10), ses_begin_date, 112)) >= @FromDate
AND CONVERT(INT, CONVERT(VARCHAR(10), ses_begin_date, 112)) <= @ToDate)
--Or
SELECT
*
FROM
@temp
WHERE
(CONVERT(INT, CONVERT(VARCHAR(10), ses_begin_date, 112)) BETWEEN @FromDate AND @ToDate)
爲什麼你處理日期爲varchar? –
尤其不好,使用格式101生成的字符串不會像日期那樣排序,並且在這裏生成兩個字符串,其中沒有其他可能的日期值出現在它們之間。 –