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

时间:2018-06-01 15:20:26

标签: sql sql-server-2014

我正在尝试写一个存储过程来做一天 - 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

如果这是一个愚蠢的问题我很抱歉,它让我陷入困境。

1 个答案:

答案 0 :(得分:2)

您可以比较日期值而不是日期号 [Audit Control Date] = DATEADD (day , -1 , GetDate() )

请参阅DATEADD Documentation