【问题标题】:Trying to track progress this month vs Previous试图跟踪本月与上一个月的进度
【发布时间】: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


【解决方案1】:
dateadd(month, -1, getdate()) 

dateadd(month, -1, '20150330') 返回 '2015-02-28'

如果上个月不存在确切的日期,则返回该月的最后一天。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-16
    • 2012-01-01
    相关资源
    最近更新 更多