-6

下面的查询是否正确且更具体TransferTime < (GetDate() - 3

$num_rows = $db->doQuery('
    SELECT Class, TransferTime 
    FROM USERDATA 
    WHERE strUserId = ? 
      AND (TransferTime < (GetDate() - 3) OR TransferTime IS NULL)   
', $character);

它会检查strUserIDandtransfertime是否小于 3 天,因为它在 3 天时并不能真正工作吗?

4

2 回答 2

3

GETDATE() - 3当前日期时间减去 3 天。如果您需要在 3 天前使用该过滤器,从 开始,00:00:00.000那么您需要先剥离TIME. GETDATE()如果使用 SQL Server 2008+,您可以GETDATE()转换为DATE

WHERE TransferTime < DATEADD(DAY,-3,CONVERT(DATE,GETDATE()))

对于以前的版本,您可以使用:

WHERE TransferTime < DATEADD(DAY,DATEDIFF(DAY,0,GETDATE())-3,0)
于 2013-07-08T19:52:39.847 回答
0

尝试:

select GetDate() - 3

它将真正从当前日期+时间删除 72 小时

于 2013-07-08T19:41:37.427 回答