昨天在 SQL 服务器中变成 YYYYMMDD 格式

Yesterday into YYYYMMDD format in SQL Server

我希望为我已经表现不佳的 SQL 代码添加一个条件。我想添加一个过滤器,其中日期 = 昨天(数据类型为 INT)。

例如

Select * 
From table
Where Date = 20190930

如何使用 GETDATE() - 1 执行此操作?

这是您的问题。

首先,您需要先将 int 日期转换为 varchar,然后再转换为 datetime,以避免在转换过程中出现算术流错误。

其次,您需要将 getdate() - 1 转换为 date 以截断时间以匹配您的日期字段。

select *
from table
where cast((cast(date as varchar(8))as datetime) = cast(getdate() - 1 as date)

select *
from table
where cast((cast(date as varchar(8)) as date) = cast(dateadd(day,datediff(day,1,GETDATE()),0) as date)

我们需要非常清楚您使用的数据类型。

如果您有一个简单的 date 值(没有时间组件作为数据类型的一部分),事情就很简单了:

Select * 
from table
where Date = DATEADD(day, -1, cast(current_timestamp as date))

如果您有 DateTimeDateTime2 值,请务必了解所有 DateTime 值都有一个时间组件,一直到毫秒。即使您希望时间分量始终在午夜或接近午夜时也是如此。这会使直接相等比较变得困难。相反,您几乎总是需要在特定的 range:

范围内进行检查
Select * 
from table
where Date >= DATEADD(day, -1, cast(current_timestamp as date))
    AND Date < cast(current_timestamp as date)