如何检查输入日期的DAY是否是SQL中给定月份的最后一天?

时间:2015-06-15 21:58:16

标签: sql sql-server datepart

DECLARE @Date DATE = '2/28/2014'

我需要测试上述日期的DAY是否是该月的最后一天,它应该适用于一年中的所有月份。

如果是真的,那么我需要返回一个true,如果没有,那么就是false。

E.g。

SET @Date = '2/27/2014'

这应该返回FALSE。

SET @Date = '12/31/2014'

这应该返回TRUE。

我知道你可以根据月份来操纵这个,但我只是想知道是否有一种简单的方法可以做到这一点。

3 个答案:

答案 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)来避免在使用不同默认选项的登录下执行代码时出现意外情况。