[英]How do I check whether the input date's DAY is the last day of the given month in SQL?
DECLARE @Date DATE = '2/28/2014'
我需要测试上面DATE中的DAY是否是该月的最后一天,并且应该在一年中的所有月份都有效。
如果为true,则需要返回true,否则为false。
例如
SET @Date = '2/27/2014'
这应该返回FALSE。
SET @Date = '12/31/2014'
这应该返回TRUE。
我知道您可以根据月份进行操作,但是我只是想知道是否有一种简单的方法可以做到这一点。
在几乎所有版本的SQL Server中均可使用的简单方法是:
select (case when month(@date) <> month(dateadd(day, 1, @date))
then 'true' else 'false'
end)
也就是说,添加一天并查看您是否在同一个月。 这适用于leap年,以及12月31日,依此类推。
如果是当月的最后一天,则返回1,否则返回0。
DATEDIFF(month,@date,@date+1)
由于还没有人给出2012+答案作为答案...
SELECT IIF(EOMONTH(@date) = @date, 'Yes','No')
顺便说一句,对于日期字面量,例如ISO yyyy-mm-dd
,应使用明确的格式,以避免在使用不同默认选项的登录名下执行代码时产生意外。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.