【问题标题】:Getdate(), -1 day获取日期(),-1 天
【发布时间】:2016-04-16 18:47:51
【问题描述】:

我不明白为什么,但不知何故,这个查询不起作用。 我想取系统日期 -1 天,其中系统日期比当前日期小 1 天。

WHERE
    a.SEND_Date >= dateadd(DD,-1,(CAST(getdate() as date) as datetime)) 

【问题讨论】:

  • “不起作用”是什么样的?
  • 你真的需要CAST吗?
  • 我不确定 CAST 是否必要。这就是为什么我寻求帮助以使其更好或修复此查询行。
  • 我认为这种方式可能更好 DATEADD(day,DATEDIFF(day,-1,GETDATE()),-1)

标签: sql sybase sqlanywhere


【解决方案1】:

CAST 取决于您需要的日期类型。 如果您只需要比较日期,则只能使用:

dateadd(DD, -1, cast(getdate() as date))

如果您需要与日期时间进行比较,您可以使用:

dateadd(DD,-1,getdate())

这会给你这样的日期时间:2016-01-11 10:43:57.443

【讨论】:

    【解决方案2】:

    在 T-SQL (sqlserver) 中你可以简单地做:

    getDate()-1
    

    标准函数减去(天)。

    【讨论】:

    • 这将是一个包含小时和分钟的 DATETIME 值,而不是一个只有年/月/日的 DATE 值。
    【解决方案3】:

    或者你可以试试这个而不增加难度?

     CAST(GETDATE()-1 as date )
    

    【讨论】:

      【解决方案4】:

      在我的版本中,检查的答案仍然有时间(00:00:00)。 要仅获取 DATE,请使用: 选择 Convert(date,dateadd(day, -1, getdate()))

      两者的权重相同,0.001 秒

      【讨论】:

        【解决方案5】:

        只缺少一个 CAST:

        dateadd(DD,-1,(CAST(getdate() as date) as datetime))
        

        两次“as”(作为日期 + 作为日期时间)但只有一次“CAST”=> 有问题 - 应该是:

        dateadd(DD,-1,CAST(CAST(getdate() as date) as datetime))
        

        【讨论】:

          【解决方案6】:

          请不要关注任何内容,因为此日期将在 01/05/2020 发布,将打印为 00/05/2020。所以请在下面使用这个来修复

          select CONVERT(varchar, DATEADD(DAY, -1, convert(Nvarchar, GETDATE(),112)),112)
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-04-28
            • 2021-11-04
            • 2018-07-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多