SQL Server 2005:如何减去6个月

21

我有一个日期,假设是今天的日期

declare @d datetime
set @d = '20101014'

我需要

select @d - <six month>

@d开始的过去六个月所包含的实际天数为。


抱歉,您的问题不够清楚;您是在问6个月之前的日期还是6个月以前的日期? - Kane
或者是自六个月前的日期以来的天数? - Alex Bagnolini
多少天 = 现在 - 6 个月前 - skaeff
2个回答

49
你可以使用 DATEADD 函数:
select DATEADD(month, -6, @d)

编辑: 如果您需要到6个月前的天数,可以使用DATEDIFF函数:

select DATEDIFF(day, @d, DATEADD(month, -6, @d))

以这种方式我可以得到日期,但我需要天数。 - skaeff

1

还要检查一下这个(正在开发这个主题):

我需要根据条件选择算法 - 如果两个日期之间的天数与6个月前(自上次日期)相同。

我是这样做的:

    case
      when
        DATEDIFF(day, DATEADD(month, -6, @pDateEnd), @pDateEnd)
        >
        DATEDIFF(day, @pDateBegin, @pDateEnd)
      then 'there is no 6-month difference between two dates'
      else 'there is 6-month difference ore more between two dates'
    end

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接