【发布时间】:2015-01-05 19:02:21
【问题描述】:
这听起来很简单,但并不像我想象的那样工作。 我正在尝试跟踪本月至今的进度 这是我的 MTD 代码
Startdate>=DATEADD(MONTH, DATEDIFF(MONTH, 0, Convert(date, getdate())), 0)
它非常简单。
上个月开始我使用:
Startdate>= DATEADD(month, DATEDIFF(month, -1, getdate()) , 0)
作为开始日期
对于当前标记,我使用了这个:
Enddate>=DATEADD(month, DATEDIFF(month, 0, getdate()-30), 0)+datepart (day,getdate())
理想情况下,我想知道今天是否是 5 号。在那个窗口中发生了多少销售。 那么我也想知道我们在上个月同期的表现如何。
我的问题是我发现在 31 天的月份和 29 天的月份之后我有问题。
有没有一个函数可以给我一个月前的同一日期?
【问题讨论】:
-
dateadd(month, -1, getdate())即dateadd(month, -1, '20150330')返回“2015-02-28” -
如果上个月不存在相同的日期,您希望发生什么?
-
看起来Horaciux 版本的作品!谢谢先生/女士!
-
如果您通过字符串操作输入了错误的日期,则会显示您尝试转换无法转换的内容的错误。
标签: sql sql-server date datediff dateadd