我正在使用應用程序(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日相關的記錄。誰能幫我這個?
我正在使用應用程序(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日相關的記錄。誰能幫我這個?
不要將日期轉換爲字符串。當您這樣做時,您允許SQL Server按字母順序比較它們,而不是按實際日期順序進行比較。
也許你有語言衝突(美國vs英國),SQL Server實際上將該日期視爲1月2日。 這篇文章提供了對語言和日期信息:(SQL Server Datetime issues. American vs. British?)
不要使用之間,並設置您的日期格式不同:
@begdt = '20170101'
@enddt = '20170131'
WHERE column1 >= @begdt AND column2 < @enddt
這將需要你的日期時間問題
爲什麼照顧你將'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