SQL-如何判断日期是否为一个月的最后一天?
我找到了一些帖子(例如,)来获取该月的最后一天,但是有没有办法确定某个日期是否是该月的最后一天 例如,如果我有这些日期的列表-SQL-如何判断日期是否为一个月的最后一天?,sql,sql-server,tsql,datetime,Sql,Sql Server,Tsql,Datetime,我找到了一些帖子(例如,)来获取该月的最后一天,但是有没有办法确定某个日期是否是该月的最后一天 例如,如果我有这些日期的列表- 8/29/2015 --fail 8/30/2015 --fail 8/31/2015 --pass 9/1/2015 --fail 如何编写查询以确定哪些日期通过/失败?我不能简单地测试DAY()=31,因为月份的天数并不都相同。我想到了两种简单的方法。首先是: select testDate , case when month(te
8/29/2015 --fail
8/30/2015 --fail
8/31/2015 --pass
9/1/2015 --fail
如何编写查询以确定哪些日期通过/失败?我不能简单地测试DAY()=31,因为月份的天数并不都相同。我想到了两种简单的方法。首先是:
select
testDate
, case
when month(testDate) <> month(dateadd(d,1,testDate))
then 'pass'
else 'fail'
end endOfMonth
from tblTest
select
testDate
, case
when day(dateadd(d,1,testDate)) = 1
then 'pass'
else 'fail'
end endOfMonth
from tblTest
这是一个类似的测试,但方式不同。如果testDate之后的1天是一个月的第一天,那么testDate必须是该月的最后一天。试试这个
SELECT
CASE
WHEN [DateColumn] = (CAST(DATEADD(MONTH, DATEDIFF(MONTH,0,[DateColumn])+1,0)-1 AS DATE))
THEN 1
ELSE 0
END AS EOM
FROM CardInfo
如果您使用的是SQL Server 2012或更高版本,请使用
EOMONTH
:
SELECT my_date,
IsEndOfMonth = IIF(my_date = EOMONTH(my_date), 1, 0)
FROM my_table
如果你在测试的前一天添加dateadd(),你可能会检查结果是否等于1。可能的dupe@gordy这些正是我一直在寻找的问题。。。它们是关于获取一个月的最后一天(即使用EOMONTH()函数),但我试图实现的是测试给定的日期是否是一个月的最后一天。@iliketocode从“获取一个月的最后一天”到“测试给定的日期是否是一个月的最后一天”是很简单的,不是吗?所提交问题的答案中包含了各种方法的示例。此处接受的答案也出现在paq中。。那么投票结束?无论如何,这里的票数都在下降。选择(日期(“月”,当前日期)+间隔“1个月-1天”)::日期;非常聪明。。我没想到这个