我使用的是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不会出错。 –
我完全不清楚你在这里要做什么 - 可能会添加一些*样本数据*和*预期结果*。你的叙述难以遵循。 –