【问题标题】:Getting Last Day of Month (2 Months Ago) in ODBC在 ODBC 中获取一个月的最后一天(2 个月前)
【发布时间】:2021-07-30 01:16:26
【问题描述】:

我试图在 ODBC 服务器上获取 2 个月前的最后一天,但由于 SSMS 在 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 子句,但没有任何积极的结果。

任何帮助将不胜感激。

谢谢。

【问题讨论】:

    标签: sql odbc ssms dbx


    【解决方案1】:

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

    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>
    

    【讨论】:

    • 嗨,eshirvana,该功能在 ODBC 中不可用,这就是我在问题中提到它的原因。我可以使用它肯定是 SSMS,但不幸的是不能在 ODBC 中使用。
    • 如果可能的话,我还有一个问题。有没有办法整合过去一个月或过去 2 个月的最后一个开放日,而不仅仅是一个月的最后一天?
    • 嗨@eshirvana,您能否详细说明您对案例的第三个答案?它似乎在我的 WHERE 子句中不起作用
    • @onetharise 里面有多余的=,我删除了,现在应该没问题了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多