SQL 选择较早的日期(包括 NULL)
Posted
技术标签:
【中文标题】SQL 选择较早的日期(包括 NULL)【英文标题】:SQL select earlier date (including NULL) 【发布时间】:2021-03-11 00:09:18 【问题描述】:我正在尝试从两个给定的列中选择较早的日期/时间。但是,如果两列之一具有空值,我会遇到问题。
我的想法是 选择 dateTime1
但是,无论我如何更改更大或更小的符号,使用上述方法将始终返回空值。
【问题讨论】:
包含最小的代表性数据集。还包括 SQL 实现作为标记。根据标准 SQL 规则,如果 任一值 为 NULL,dateTime1 < datetime2
将始终不为真。当其中一列 is NULL 时结果应该是什么(这就是为什么包含的代表性数据很有帮助)?
也就是说,这其中任何一个都可以工作:case when dateTime1 is null or dateTime1 < dateTime2 then column1 else column 2 end
,甚至:case when isnull(dateTime1, '17530101') < isnull(dateTime2, '17530101') then column1 else column2 end
(在 SQL Server 中工作正常;使用 isnull 而不是标准 COALESCE 来显示这一点并利用 SQL Server 的isnull 类型规则)。
如果其他结果集为空,则应选择其他列中的日期。
【参考方案1】:
你可以拥有:
Select Case When Column1 is null then Column2 when Column2 is Null then Column1 When Column1 > Column2 Then Column2 When Column1 < Column2 Then Column1 End As EarlierDate From TableName
【讨论】:
以上是关于SQL 选择较早的日期(包括 NULL)的主要内容,如果未能解决你的问题,请参考以下文章
如何获取我的 SQL/Vertica 表中每个日期的上个月数据