會(huì)員登錄 - 用戶注冊(cè) - 網(wǎng)站地圖 Office中國(guó)(office-cn.net),專業(yè)Office論壇

SQL中獲取兩日期之間的值

時(shí)間:2013-07-23 16:47 來源:office中國(guó) 作者:魚兒游游 閱讀:

方法一、用 BETWEEN 操作符

       操作符 BETWEEN ... AND 會(huì)選取介于兩個(gè)值之間的數(shù)據(jù)范圍。這些值可以是數(shù)值、文本或者日期。
但,不同的數(shù)據(jù)庫(kù)對(duì) BETWEEN...AND 操作符的處理方式是有差異的。

        SELECT * FROM [員工表]
        WHERE [登記日期]BETWEEN  '2011-11-01‘  AND '2011-11-23’

      上述SQL語句在某些數(shù)據(jù)庫(kù)會(huì)列出介于 "2011-11-01" 和 "2011-11-23" 之間的人,但不包括 "2011-11-01" 和 "2011-11-23"這兩天登記的人員 ;某些數(shù)據(jù)庫(kù)會(huì)列出介于 "2011-11-01" 和 "2011-11-23" 之間并包括 "2011-11-01" 和 "2011-11-23"這兩天登記的人員;而另一些數(shù)據(jù)庫(kù)會(huì)列出介于 "2011-11-01" 和 "2011-11-23" 之間的人,包括 "2011-11-01"這一天登記的人員 、但不包括 "2011-11-23"這一天登記的人員 。
       如使用此方法,檢查你的數(shù)據(jù)庫(kù)是如何處理 BETWEEN....AND 操作符的,是非常重要的事情!

方法二、利用SQL提供的日期轉(zhuǎn)換函數(shù)

         SELECT * FROM [員工表]
         WHERE  CONVERT(varchar(10), CAST([登記日期] AS datetime), 120) >='2011-11-01'  AND
                       CONVERT(varchar(10), CAST([登記日期] AS datetime), 120) <='2011-11-23'

       上述SQL語句,能準(zhǔn)確返回:2011-11-01 至 2011-11-23 之間登記的所有人員(包括:包括 "2011-11-01" 和 "2011-11-23"這兩天登記的人員)。
       注意:CONVERT(varchar(10), CAST([登記日期] AS datetime), 120) 返回的字符串是: yyyy-mm-dd 的形式。
                因此,使用此方法比較日期前,記得把日期條件的值變?yōu)椋簓yyy-mm-dd 的形式,才能得到準(zhǔn)確的數(shù)據(jù)。 

總結(jié):個(gè)人認(rèn)為方法二較好。

(責(zé)任編輯:admin)

頂一下
(3)
100%
踩一下
(0)
0%
發(fā)表評(píng)論
請(qǐng)自覺遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴(yán)禁發(fā)布色情、暴力、反動(dòng)的言論。
評(píng)價(jià):