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

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 是否是该月的最后一天,它应该适用于一年中的所有月份。

如果是真的,那么我需要return一个真,如果不是,那么就是假的。

例如

SET @Date = '2/27/2014'

这应该 return FALSE。

SET @Date = '12/31/2014'

这应该 return 正确。

我知道您可以根据月份进行操作,但我只是想知道是否有一种简单的方法可以做到这一点。

几乎适用于任何版本的 SQL 服务器的简单方法是:

select (case when month(@date) <> month(dateadd(day, 1, @date))
             then 'true' else 'false'
         end)

也就是加一天,看看是不是同月。这适用于闰年和 12 月 31 日等。

这将 return 如果是该月的最后一天,则为 1,否则为 0

DATEDIFF(month,@date,@date+1)

因为还没有人给出 2012+ 答案作为答案...

SELECT IIF(EOMONTH(@date) = @date, 'Yes','No')

另外,您应该为日期文字使用明确的格式,例如 ISO yyyy-mm-dd,以避免在使用不同默认选项的登录下执行代码时出现意外。