首页 > 解决方案 > 在 ODBC 中获取一个月的最后一天(2 个月前)

问题描述

我试图在ODBC服务器上获得 2 个月前的最后一天,但似乎无法完全正确,因为SSMS的 EOMONTH 内置功能在ODBC中不起作用。

我目前在WHERE子句中的部分代码返回上个月的第一天。我正在尝试获得前一天,就像描述的那样,2 个月前的最后一天。

这是我目前正在使用的代码:

WHERE x_date = cast(dateadd(month, -1, dateadd(day, 1 - day(getdate()), getdate())) as date)

目前,我们是 2021 年 5 月 7 日。那个WHERE子句在 2021 年 4 月 1 日返回给我。我希望它在 2021 年 3 月 31 日返回给我。

我尝试了其他WHERE子句,但没有任何积极的结果。

任何帮助将不胜感激。

谢谢你。

标签: sqlodbcssmsdbx

解决方案


您可以EOMONTH在 sql server 中使用函数:

SELECT EOMONTH(GETDATE(), -2)

如果不支持,那么这应该可以工作:

SELECT DATEADD(dd,-(DAY(DATEADD(mm,-1,getdate()))),DATEADD(mm,-1,getdate()))

如果您指的是工作日,则按开放日:

select case  DATENAME(weekday , <above date>)
        when  'Saturday' then dateadd(day , 2 , <above date>)
        when  'sunday' then dateadd(day , 1 , <above date>)
        else  <above date>

推荐阅读