繁体   English   中英

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

[英]SQL - How to tell if a date is the last day of the month?

我找到了一些帖子(例如SQL 查询以查找月份的最后一天,在 SQL 中获取月份的最后一天)来获取月份的最后一天,但是有没有办法确定日期是否为这个月的最后一天?

例如,如果我有这些日期的列表-

8/29/2015   --fail

8/30/2015   --fail

8/31/2015   --pass

9/1/2015    --fail

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

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

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

我想到两种简单的方法。 首先是:

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必须是该月的最后一天。

尝试这个

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 或更高版本中最喜欢的方式:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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