【发布时间】:2019-10-29 18:35:24
【问题描述】:
我在 SQL 查询中使用此代码
WHERE [Date] >= DATEFROMPARTS(DATEPART(year,GETDATE()),DATEPART(month,GETDATE())-1,DATEPART(day,GETDATE()))
AND [Date] <= EOMONTH(DATEFROMPARTS(DATEPART(year,GETDATE()),DATEPART(month,GETDATE())-1,DATEPART(day,GETDATE())));
问题来了 2020 年 12 月的查询会报错
我发布的代码管理返回数据的日期。它查看代码运行的日期并选择从上个月到上个月末的那一天。我需要的是从调用此代码之前一个月的第一天到最后一天的日期。
我明天将研究这个问题,看看其他人能想出什么解决方案会很有趣。
【问题讨论】:
-
“问题是 2020 年 12 月查询将通过错误”。我没有看到任何错误。 db<>fiddle
-
你要使用'2020-12-31'吗?
-
如果您无法在文本中定义您想要完成的任务,您将难以编写适当的代码。而且您可能并不真正了解您的目标。如果今天是 2019 年 3 月 30 日,您打算在查询中使用哪些日期作为边界?如果您的目标是使用上个月的同一天,则需要明确定义如何处理这些月末问题。
-
不一定正确 SMor,有阅读障碍 我发现用英语而不是代码来定义我的编码问题要困难得多。下面的人向我指出 DATEADD 是我执行此操作所需要的。它可以让我从一月减去一个月,希望得到十二月。
标签: sql sql-server sql-server-2012 sql-server-2012-express