SQL Server日期-1,每月的第一个问题

SQL Server日期-1,每月的第一个问题,sql,sql-server-2014,Sql,Sql Server 2014,我正试图编写一个存储过程来执行day-1,但在本月1日,报告为空,我需要它每隔一天显示上个月的最后一天,因为它正常工作。我假设是因为1-1=0。有更好的逻辑吗 我目前正在使用 WHERE DAY([Audit Control Date]) = (DAY(GETDATE()) - 1) 我的日期函数如下: ALTER FUNCTION [dbo].[f_Date] (@date CHAR(7)) RETURNS DATETIME BEGIN RETURN (SEL

我正试图编写一个存储过程来执行day-1,但在本月1日,报告为空,我需要它每隔一天显示上个月的最后一天,因为它正常工作。我假设是因为1-1=0。有更好的逻辑吗

我目前正在使用

WHERE DAY([Audit Control Date]) = (DAY(GETDATE()) - 1)
我的日期函数如下:

ALTER FUNCTION [dbo].[f_Date]
    (@date CHAR(7))
RETURNS DATETIME
BEGIN
    RETURN
        (SELECT ConvertedDate = 
                     CASE WHEN (@date) = 999999 THEN NULL
                          WHEN (@date) = 0 THEN NULL
                          WHEN LEN(@date) = 6 THEN NULL
                          WHEN LEN(@date) = 7 THEN CAST('20' + RIGHT(@date, 6) AS DATE) 
                          ELSE CAST('19' + RIGHT(@date, 6) AS DATE) 
                      END)
END

如果这是一个愚蠢的问题,我深表歉意,它只是让我卡住了。

您可以比较日期值而不是天数
[审核控制日期]=DATEADD(day,-1,GetDate())


请参见

您可以比较日期值而不是天数
[审核控制日期]=DATEADD(day,-1,GetDate())