【问题标题】:SQL Server 2005: how to subtract 6 monthSQL Server 2005:如何减去 6 个月
【发布时间】:2011-04-25 09:07:18
【问题描述】:

我有个约会,假设今天约会

declare @d datetime
set @d = '20101014'

我需要

select @d - <six month>

其中是包含过去六个月的实际天数,从@d 开始。

【问题讨论】:

  • 对不起,您的问题有点不清楚;您要的是 6 个月以内的日期还是 6 个月前的日期?
  • 或自 6 个月前的日期以来的天数?
  • 多少天 = 现在 - 6 个月前

标签: sql sql-server-2005 datetime date datediff


【解决方案1】:

你可以使用DATEADD:

select DATEADD(month, -6, @d)

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

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

【讨论】:

  • 这样我会得到日期,但我需要天数
【解决方案2】:

也检查一下(开发这个主题):

我需要根据条件选择算法 - 如果两个日期之间的天数与 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

【讨论】:

    猜你喜欢
    • 2019-04-09
    • 2022-12-14
    • 1970-01-01
    • 2011-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多