SQL Server SQL -如何判断一个日期是否是一个月的最后一天?

whhtz7ly  于 2023-01-01  发布在  其他
关注(0)|答案(4)|浏览(353)

我发现一些帖子(例如SQL Query to find the last day of the monthGet the last day of the month in SQL)可以获得这个月的最后一天,但是有没有办法确定一个日期是否是这个月的最后一天?
例如,如果我有一张这些日期的列表-

8/29/2015   --fail

8/30/2015   --fail

8/31/2015   --pass

9/1/2015    --fail

我如何编写一个查询来确定哪些日期通过/失败呢?我不能简单地测试DAY()是否= 31,因为月份中的天数并不都相同。

mrwjdhj3

mrwjdhj31#

如果您使用的是SQL Server 2012或更高版本,请使用EOMONTH

SELECT  my_date,
        IsEndOfMonth = IIF(my_date = EOMONTH(my_date), 1, 0) 
FROM    my_table
mzaanser

mzaanser2#

我想到两种简单的方法,第一种是:

select
testDate
, case 
   when month(testDate) <> month(dateadd(d,1,testDate))
      then 'pass'
   else 'fail'
  end endOfMonth
from tblTest

此函数测试testDate之后的1天是否福尔斯在testDate当前所在月份之外的月份。如果是,testDate必须是当前月份的最后一天。
第二个问题是:

select
testDate
, case 
   when day(dateadd(d,1,testDate)) = 1
      then 'pass'
   else 'fail'
  end endOfMonth
from tblTest

这是一个类似的测试,但方式不同。如果testDate之后的1天是一个月的第一天,那么testDate必须是该月的最后天。

jpfvwuh4

jpfvwuh43#

试试这个

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
vhmi4jdf

vhmi4jdf4#

在SQL Server 2012或更高版本中处理日期时间时,我最喜欢的方式:

declare @date datetime = GETUTCDATE();
select case when @date > EOMONTH(@date) then 1 else 0 end;

相关问题