DECLARE @Date DATE = '2/28/2014'
我需要测试上述日期的DAY是否是该月的最后一天,它应该适用于一年中的所有月份。
如果是真的,那么我需要返回一个true,如果没有,那么就是false。
E.g。
SET @Date = '2/27/2014'
这应该返回FALSE。
SET @Date = '12/31/2014'
这应该返回TRUE。
我知道你可以根据月份来操纵这个,但我只是想知道是否有一种简单的方法可以做到这一点。
答案 0 :(得分:8)
几乎在任何版本的SQL Server中都可以使用的简单方法是:
select (case when month(@date) <> month(dateadd(day, 1, @date))
then 'true' else 'false'
end)
也就是说,添加一天,看看你是否在同一个月。这适用于闰年和12月31日等等。
答案 1 :(得分:2)
如果是该月的最后一天,则返回1,否则返回0
DATEDIFF(month,@date,@date+1)
答案 2 :(得分:1)
由于还没有人将2012+答案作为答案......
SELECT IIF(EOMONTH(@date) = @date, 'Yes','No')
另外,您应该使用明确的日期文字格式(如ISO yyyy-mm-dd
)来避免在使用不同默认选项的登录下执行代码时出现意外情况。