簡體   English   中英

MSSQL查詢幾個日期范圍

[英]MSSQL query several date ranges

我正在嘗試查詢幾個日期范圍的數據。 這是我寫的:

Select Datetime, Round(value,3) As v
From myTable
Where charfield = 'WHATEVER'
And ((Datetime between '2014-02-01 00:00' AND '2014-02-01 23:59')
  OR (Datetime between '2014-02-02 00:00' AND '2014-02-02 23:59')
  OR (Datetime between '2014-02-03 00:00' AND '2014-02-03 23:59')
  OR (Datetime between '2014-02-04 00:00' AND '2014-02-04 23:59'))

但是我只能從最后一個范圍( '2014-02-04' )獲得數據,我不知道為什么。 我確定其他間隔中也有數據。

請忽略間隔是連續的事實,這只是一個示例。 在實際代碼中,間隔范圍是完全任意的。

當您使用BETWEEN並且該列同時包含日期和時間元素時,您將使用什么作為最終值? 您可能會意識到,對於不同的類型,會有不同的精度。 此外,假設類型為DATETIME,並且使用以下謂詞。

WHERE
orderdate BETWEEN '20070201' AND '20070228 23:59:59.999'

此類型的精度為三分之三毫秒。 端點999的毫秒部分不是精度單位的倍數,因此SQL Server最終將值四舍五入到2007年3月1日午夜。結果,您可能最終得到一些您不應該使用的命令查看。 簡而言之,請使用> =和<而不是BETWEEN,無論時間部分是否適用,此格式在所有日期和時間類型的所有情況下均可正常使用。 查詢Microsoft SQL Server 2012轉換工具包70-461

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM