Sql 返回昨天日期的结果

Sql 返回昨天日期的结果,sql,sql-server,date,Sql,Sql Server,Date,我有一个连接返回今天的结果,但我希望它返回昨天的值 FROM Person JOIN Profit ON Person.id = Profit.id AND [DATE] = CAST(getdate () -1 as Date) ^^这将返回当前日期 然后我尝试返回昨天的日期: [DATE] = DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), -1) [DATE] = DATEADD(day,DATEDIFF(day,0,GETDATE())-

我有一个连接返回今天的结果,但我希望它返回昨天的值

FROM
Person
JOIN Profit 
ON Person.id = Profit.id 
AND [DATE] = CAST(getdate () -1  as Date)
^^这将返回当前日期

然后我尝试返回昨天的日期:

 [DATE] = DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), -1)

 [DATE] = DATEADD(day,DATEDIFF(day,0,GETDATE())-1,0)

 [DATE] = dateadd(DD, -1, cast(getdate() as date))
但这些都不管用。有人能帮忙吗?如果您执行以下操作,请感谢

select DATEADD(day, -1, cast(SYSDATETIME() as DATE))
select dateadd(DD, -1, cast(getdate() as date))
然后返回昨天的日期。因此,唯一的问题可能是[DATE]属性的格式。

简单地说:

FROM
Person
JOIN Profit 
ON Person.id = Profit.id 
WHERE Table.[DATE] = DATEADD(DAY, -1, GETDATE() );

可能[日期]也需要转换:

FROM
    Person
JOIN 
    Profit 
ON 
    Person.id = Profit.id 
AND CAST([DATE] as Date) = CAST(getdate () -1  as Date)

如果不希望时间成为日期的一部分,请使用此选项

SELECT * 
FROM Person 
    JOIN Profit ON Person.id = Profit.id 
   AND [DATE] = CONVERT(VARCHAR, DATEADD(DAY, -1, GETDATE()), 106)

如果您有带日期的列:

SELECT * from Person p join Profit pr 
on (p.id = pr.person_id and pr.`date` = SUBDATE(CURDATE(),1))

我认为您应该在之间使用
,如下所示:

FROM
Person
JOIN Profit 
ON Person.id = Profit.id 
AND [DATE] BETWEEN CONVERT(date, GETDATE()-1) AND CONVERT(date, GETDATE()-1)

添加示例数据和所需结果。您将获得一个正确的getdate()-1返回昨天的日期。@Yogesharma我只想返回昨天results@RyanGadsdon两个表中是否都有
DATE
列?我们可以看看示例数据吗?我们无法确定是什么导致了这样的问题。我们尝试过使用between来传递日期吗?
getdate()-1
returndate,为什么需要
CAST
?@Sami'getdate'本身也会返回时间等。casting as DATE只返回日期,这就是为什么我说也要为[DATE]执行此操作的原因所以它们都是完全相同的格式这是哪个数据库服务器?mySQL?是的,它是mySQL数据库。@user8270653这个问题用SQL Server man标记,你能在那里看到mySQL吗?