当SQL查询中的日期为空时,如何提取最大日期

当SQL查询中的日期为空时,如何提取最大日期,sql,sql-server,datetime,isnull,Sql,Sql Server,Datetime,Isnull,我正在处理一个SQL查询,以获取定期类的最小开始日期和最大结束日期。按照数据库的设置方式,如果类不继续,则它们有一个结束日期,如果类继续,则结束日期为空。该字段是数据类型datetime 如果结束日期为空,那么这实际上就是我想要的日期,因为这是最长的结束日期,但我似乎无法解决如何让它工作?我得到该字段中的最后一个实际日期,但无法让查询返回null或更好的是我设置的默认日期 提前感谢如果希望将null日期设为最大值,可以使用大小写表达式: select (case when count(*) =

我正在处理一个SQL查询,以获取定期类的最小开始日期和最大结束日期。按照数据库的设置方式,如果类不继续,则它们有一个结束日期,如果类继续,则结束日期为空。该字段是数据类型datetime

如果结束日期为空,那么这实际上就是我想要的日期,因为这是最长的结束日期,但我似乎无法解决如何让它工作?我得到该字段中的最后一个实际日期,但无法让查询返回null或更好的是我设置的默认日期


提前感谢

如果希望将
null
日期设为最大值,可以使用
大小写
表达式:

select (case when count(*) = count(enddate) then max(enddate) end)
count(*)=count(enddate)
基本上表示
enddate
值都不是
NULL

如果您喜欢使用函数,还可以使用:

select nullif(max(coalesce(enddate, '9999-01-01')), '9999-01-01')

但是我更喜欢第一种方法。

如果希望
null
日期为最大值,可以使用
大小写
表达式:

select (case when count(*) = count(enddate) then max(enddate) end)
count(*)=count(enddate)
基本上表示
enddate
值都不是
NULL

如果您喜欢使用函数,还可以使用:

select nullif(max(coalesce(enddate, '9999-01-01')), '9999-01-01')

但我更喜欢第一种方法。

编辑您的问题并提供示例数据和所需结果。使用ISNULL函数并返回默认日期,其中该日期时间为NULL,或者使用下面的Gordon答案。
MAX(ISNULL(日期,'2050-01-01'))
。。。如果存在空值,则返回2050。编辑您的问题并提供示例数据和所需结果。使用ISNULL函数并返回该日期时间为空的默认日期,或者使用下面的Gordon答案。
MAX(ISNULL(日期,'2050-01-01'))
。。。如果存在空值,则返回2050。感谢您的帮助。我已经找了好几天的答案了。谢谢你的帮助。我已经寻找答案好几天了。