【问题标题】:Return exact number of days in SQL query返回 SQL 查询中的确切天数
【发布时间】:2019-12-24 06:53:11
【问题描述】:

以下查询需要帮助

当我运行以下查询时

select case when CAST(var1 as DATE) >= CAST(getdate() as DATE) -5 then 1 else 0 end as temp

---where "var1" is datetime variable

我看到错误 - 操作数类型冲突:日期与 int 不兼容。

请帮忙

【问题讨论】:

  • CAST(getdate() as DATE) -5 错误。你不能datetime - int
  • 你从datetime中减去int

标签: sql-server date datetime case


【解决方案1】:

我想你正在寻找DATEADD

DECLARE @var1 datetime = '2019-12-31 00:00:00'

select case when CAST(@var1 as DATE) >= DATEADD(day,-5,CAST(getdate() as DATE)) then 1 else 0 end as temp

DATEADD() 函数为日期添加/删除时间/日期间隔,然后返回日期。

语法:

DATEADD(interval, number, date)

Here is the tutorial

【讨论】:

    【解决方案2】:

    我认为您需要将指定的值添加到日期的指定日期部分。 你可以使用DATEADD

    DATEADD() 的语法:

    DATEADD (date_part , value , input_date ) 
    

    例如

    DATEADD(second, 1, GETDATE())
    DATEADD(day, 1, GETDATE())
    DATEADD(month, 4, GETDATE())
    

    然后:

    DECLARE @var1 DATETIME = '2019-10-20'
    
    SELECT CASE 
            WHEN CAST(@var1 AS DATE) >= DATEADD(MONTH, 4, GETDATE()) THEN 1
            ELSE 0
       END AS temp
    

    【讨论】:

      猜你喜欢
      • 2012-02-12
      • 1970-01-01
      • 2021-07-28
      • 1970-01-01
      • 2013-12-20
      • 2011-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多