Sql server 在sql存储过程中查找创建日期和更新日期之间的最新日期

Sql server 在sql存储过程中查找创建日期和更新日期之间的最新日期,sql-server,stored-procedures,Sql Server,Stored Procedures,我的表中有两列,分别是创建日期和更新日期。我想从中查找最新的日期。我想考虑哪个是最新的,并从输入值中筛选它 我目前的查询是:- Select * from Emp E WHERE (E.USERID=@UserID) and (E.CDATE >= @FromDate AND E.CDATE <= @ToDate) order by qdate desc //通过选择“全部”来运行此操作。您可以从日期中减去日期,并使用系统日期来查找最新日期。通过使用case,您可以根据最新日期

我的表中有两列,分别是创建日期和更新日期。我想从中查找最新的日期。我想考虑哪个是最新的,并从输入值中筛选它

我目前的查询是:-

Select * 
from Emp E 
WHERE (E.USERID=@UserID) and (E.CDATE >= @FromDate AND E.CDATE <= @ToDate) order by qdate desc

//通过选择“全部”来运行此操作。您可以从日期中减去日期,并使用系统日期来查找最新日期。通过使用case,您可以根据最新日期进行筛选。
SELECT *
FROM Emp E
WHERE (E.USERID = @UserID)
    AND 1 = CASE 
        WHEN E.CDATE >= E.UDATE
            THEN CASE 
                    WHEN (
                            E.CDATE >= @FromDate
                            AND E.CDATE <= @ToDate
                            )
                        THEN 1
                    END
        WHEN E.CDATE < E.UDATE
            THEN CASE 
                    WHEN (
                            E.UDATE >= @FromDate
                            AND E.UDATE <= @ToDate
                            )
                        THEN 1
                    END
        ELSE 0
        END
比如:

要查找两个日期之间的最新日期,可以使用下面脚本的引用

DECLARE @fromdate DATETIME, @toDate DATETIME, @date DATETIME
SET @fromdate = '2019-04-05'
SET @toDate = '2019-05-05'

SET @date = CASE WHEN @fromdate - GETDATE() > @toDate - GETDATE() THEN @fromdate
            ELSE @toDate
            END;
SELECT @date; 

假设更新日期为UDATE

选择* 来自Emp E 其中E.USERID=@USERID 并从valuesE.CDATE中选择MAXV,在@FromDate和@ToDate之间选择E.UDATE MAX_DATEV

表中字段的名称是什么?我不能在你的问题中看到更新的日期。现在,我只考虑了Cddate,但是我必须考虑哪一个是最新的日期和更新日期。这应该是不可能的。如果两个日期都相等,那就不包括在内了。如果两个日期相等,那么可以考虑任何一列。我已经考虑了第一个案例本身。
SELECT  *
FROM    Emp E
WHERE   ( E.USERID = @UserID )
        AND E.CDATE = CASE WHEN @fromdate - GETDATE() > @toDate - GETDATE()
                           THEN @fromdate
                           ELSE @toDate
                      END;
DECLARE @fromdate DATETIME, @toDate DATETIME, @date DATETIME
SET @fromdate = '2019-04-05'
SET @toDate = '2019-05-05'

SET @date = CASE WHEN @fromdate - GETDATE() > @toDate - GETDATE() THEN @fromdate
            ELSE @toDate
            END;
SELECT @date;