[英]How to change day of date in SQL server and set last day of month if the day does not exist in the month
[英]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.