具有“错误”日期条件的 SQL Server SELECT 语句

ahm*_*md0 3 sql sql-server select date

比如说,如果我需要从数据库中选择日期字段在特定时间范围内的记录。选择查询将是这样的:

SELECT * FROM [MyTable] WHERE [Date] >= @RangeBegin AND [Date] <= @RangeEnd;
Run Code Online (Sandbox Code Playgroud)

但是当日期字段可能为空或无效时,我有一个小条件。在这种情况下,日期值应该取自 @DefaultDate。

您如何将所有这些放入 SQL 中?

Mik*_*son 5

由于您说日期可能无效,因此我假设您已将日期存储为 varchar。您可以使用isdate来检查日期是否有效。

select case isdate([Date]) 
         when 1 then cast([Date] as datetime)
         else @DefaultDate 
       end as [Date]
from MyTable
where case isdate([Date]) 
        when 1 then cast([Date] as datetime)
        else @DefaultDate 
      end between @RangeBegin and @RangeEnd
Run Code Online (Sandbox Code Playgroud)