SQL Server:检查所选日期是否比当前日期旧或新

SQL Server:检查所选日期是否比当前日期旧或新,sql,sql-server,date,datetime,stored-procedures,Sql,Sql Server,Date,Datetime,Stored Procedures,我使用以下存储过程选择数据,其中dateDT保存为datetime 是否有一种方法可以使用CASE检查每个选定日期是否比当前日期旧或新,并为该日期添加一个简短文本(例如“过去”或“未来”) SELECT dateID, CONVERT(VARCHAR(11), dateDT, 106) AS dateDT, CONVERT(VARCHAR(10), dateDT, 126) AS dateDTShort, coun

我使用以下存储过程选择数据,其中dateDT保存为datetime

是否有一种方法可以使用CASE检查每个选定日期是否比当前日期旧或新,并为该日期添加一个简短文本(例如“过去”或“未来”)

SELECT      dateID,
            CONVERT(VARCHAR(11), dateDT, 106) AS dateDT,
            CONVERT(VARCHAR(10), dateDT, 126) AS dateDTShort,
            countries,
            regions
FROM        DaysFixed
WHERE       countries LIKE '%'+@selCountry+'%'
OR          regions LIKE '%'+@selCountry+'%'
ORDER BY    dateID
FOR XML PATH('datesDT'), ELEMENTS, TYPE, ROOT('root')

谢谢你,迈克

假设该字段是日期:

SELECT      dateID,
            CONVERT(VARCHAR(11), dateDT, 106) AS dateDT,
            CASE WHEN CONVERT(VARCHAR(11), dateDT, 106) > GETDATE() THEN 'Future' 
            ELSE 'Past' END AS FutureOrPast,
            CONVERT(VARCHAR(10), dateDT, 126) AS dateDTShort,
            countries,
            regions
FROM        DaysFixed
WHERE       countries LIKE '%'+@selCountry+'%'
OR          regions LIKE '%'+@selCountry+'%'
ORDER BY    dateID
FOR XML PATH('datesDT'), ELEMENTS, TYPE, ROOT('root')
SELECT      dateID,
            CONVERT(VARCHAR(11), dateDT, 106) AS dateDT,
            CONVERT(VARCHAR(10), dateDT, 126) AS dateDTShort,
            (CASE WHEN dateDT < GETDATE() then 'PAST' else 'FUTURE' end) as TimeWhen,
            countries,
            regions
FROM        DaysFixed
WHERE       countries LIKE '%'+@selCountry+'%'
OR          regions LIKE '%'+@selCountry+'%'
ORDER BY    dateID
FOR XML PATH('datesDT'), ELEMENTS, TYPE, ROOT('root')

请注意,在这些示例中,
dateDT
列未应用任何函数。这是一个好习惯,尽管它对
案例
语句没有影响。但是,当在
where
子句中使用时,它会对性能产生很大影响。

假设该字段是日期:

SELECT      dateID,
            CONVERT(VARCHAR(11), dateDT, 106) AS dateDT,
            CONVERT(VARCHAR(10), dateDT, 126) AS dateDTShort,
            (CASE WHEN dateDT < GETDATE() then 'PAST' else 'FUTURE' end) as TimeWhen,
            countries,
            regions
FROM        DaysFixed
WHERE       countries LIKE '%'+@selCountry+'%'
OR          regions LIKE '%'+@selCountry+'%'
ORDER BY    dateID
FOR XML PATH('datesDT'), ELEMENTS, TYPE, ROOT('root')

请注意,在这些示例中,
dateDT
列未应用任何函数。这是一个好习惯,尽管它对
案例
语句没有影响。但是,当在
where
子句中使用时,它会在性能上产生很大的差异。

这非常完美-非常感谢您的快速帮助!我会尽快接受。这太完美了-非常感谢您的快速帮助!我会尽快接受。也谢谢你!也谢谢你!