我使用的是SQL Server 2008 R2和需要通過選擇開始和結束日期與月份的最後一天返回的所有數據:如何獲得一個月(SQL Server)的最後一天
當用戶選擇兩個日期是這樣的:
開始日期:2017-01-01
結束日期:2017-22-02
結果必須是: 2017-31-01
和2017-22-02
我嘗試下面的代碼,但我得到了錯誤的結果=>2017-28-02
SELECT
DATEADD(d, -1, DATEADD(mm, DATEDIFF(m, 0,'2017-22-02') + 1, 0)) AS DiffDate,
MEMBER_ID
FROM
dbo.tblOne
WHERE
DATUM >= '2017-01-01'
AND
DATUM <= '2017-22-02'
任何人都可以有一個想法是什麼,我做錯了?
編輯: 我希望以下結果:
DiffDate | MemberID | ...
---------------------------------
2017-01-31 | CBK01
2017-01-31 | KKM05
2017-01-31 | ABC99
2017-02-22 | CBK01
2017-02-22 | KKM05
2017-02-22 | ABC99
@AndrewMorton通常我總是使用這種格式'YYYY-MM-dd'但今天的SQL Server管理工作室只接受'yyyy-dd-MM' ......我不知道爲什麼。 – yuro
@AndrewMorton - 我們自己的,根據SQL Server開發人員的智慧 - 如果你設置了dateformat dmy或set language british_english,那麼你會發現它也顛倒了它接受'nnnn-nn-nn'格式。這就是爲什麼爲了安全起見,你應該使用'yyyyMMdd',也就是說,不要使用分隔符(如果你有時間的話可以使用'yyyy-MM-ddThh:mm:ss') - SQL Server不會出錯。 –
我完全不清楚你在這裏要做什麼 - 可能會添加一些*樣本數據*和*預期結果*。你的敘述難以遵循。 –