Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL-如何判断日期是否为一个月的最后一天?_Sql_Sql Server_Tsql_Datetime - Fatal编程技术网

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天”)::日期;非常聪明。。我没想到这个