2017-10-04 30 views
0

我正在使用應用程序(EHR系統),並需要在SSRS記錄中的特定日期範圍內記錄。在腳本中,我格式化日期變量並應用於列。SQL Server:在日期之間帶來記錄

Convert(varchar(10), @begdt, 101) + ' 00:00:00' and 
Convert(varchar(10), @enddt, 101) + ' 23:59:59' 

如果我設置開始和結束日期2017年1月1日和2017年1月31日,然後將其拉了與2017年2月1日相關的記錄。誰能幫我這個?

+1

爲什麼照顧你將'datetime'轉換爲字符串進行比較? [不良習慣踢:錯誤處理日期/範圍查詢 - 亞倫伯特蘭](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/16/bad-habits-to-kick-mishandling-date- range-queries.aspx) [與'魔鬼之間有什麼共同點? - 亞倫伯特蘭](http://sqlblog.com/blogs/aaron_bertrand/archive/2011/10/19/what-do-between-and-the-devil-have-in-common.aspx) – SqlZim

回答

0

不要將日期轉換爲字符串。當您這樣做時,您允許SQL Server按字母順序比較它們,而不是按實際日期順序進行比較。

0

不要使用之間,並設置您的日期格式不同:

@begdt = '20170101' 
@enddt = '20170131' 

WHERE column1 >= @begdt AND column2 < @enddt 

這將需要你的日期時間問題

相關問題