sql - 在 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子句,但没有任何积极的结果。
任何帮助将不胜感激。
谢谢你。
解决方案
您可以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>
推荐阅读
- linux - 在多个字符串的末尾添加一个空格
- c++ - 如何在 hpp 文件中实现类函数?
- google-sheets - Google表格:返回两个索引之间的INDEX()值切片的本机公式?
- eclipse-plugin - 无法将 LDT 安装到 Eclipse 2019-12 (4.14.0)
- javascript - jQuery 数据属性仅在第二次单击后更新
- node.js - 使用nodejs下载一系列文件时出现异步问题
- python-3.x - 将 STDOUT 提供给 stdout 会为 subprocess.run 返回 errno9
- asp.net-mvc - 如何隐藏 webgrid 的列我可以使用下面的代码隐藏 webgrid 的标题隐藏数据但列仍然在 UI 中显示为空白
- osgi-bundle - 如何将 maven jar 转换为 OSGI 包?
- javascript - 以角度在打字稿文件中添加html标签