繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM