Sql Server 問題之between and 使用注意事項

來源:互聯網
上載者:User

今天也遇到了下面問題。以後使用Between 都要注意了,最好不用!

1.問題:

有五條資料如下:
2010-12-01 12:16:10.000
2010-12-02 13:11:28.000
2010-12-03 13:49:15.000
2010-12-04 13:52:28.000
2010-12-05 13:52:28.000

我使用select * from table where  [time] between '2010-12-1' and '2010-12-6' 能顯示出這五條 

如果我使用select * from sk_SmsSee where  [time] between '2010-12-1' and '2010-12-5'
為什麼就顯示4條呢?
2010-12-01 12:16:10.000
2010-12-02 13:11:28.000
2010-12-03 13:49:15.000
2010-12-04 13:52:28.000

換句話說最後的日期總是不顯示為什麼呢?

 

經過測試 代碼換成select * from table where  [time]>='2010-12-1 12:00:00' and [time]<='2010-12-5 12:00:00'  也是顯示4條。既然資料庫中存在2010-12-5日的資料,那為什麼[time]<='2010-12-5 ' 查不出來呢?

2.答案如下:

MS SQL Server 系統中使用Bewteen ... And 其範圍是閉區間,即包含左右邊界值在內的。

另外在MS SQL 系統中對於日期DATE-->DATETIME隱式轉化時,系統會自動增加 TIME欄位00:00:00

即從日期型 " 2010-12-01" 隱式轉化為  日期時間型時為 "2010-12-01 00:00:00"

所以對日期型使用Between ...AND...時,即實際只會包含另邊值的部分值,可以使用半開半閉區間( >= && < )實現你所提到的問題。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.