sql - SQL查询中日期为空时如何提取最大日期

标签 sql sql-server datetime isnull

我正在使用 SQL 查询来获取重复类(class)的最小开始日期和最大结束日期。数据库的设置方式是,如果类(class)不继续,则有一个结束日期,如果类(class)继续,则结束日期为空。该字段是数据类型日期时间。

如果结束日期为空,这基本上就是我想要的日期,因为它是最大结束日期,但我似乎无法弄清楚如何让它发挥作用?我得到该字段中的最后一个实际日期是什么,并且无法让查询返回 null 或更好的值,但我设置的默认日期。

提前致谢

最佳答案

如果您希望将 null 日期作为最大值,可以使用 case 表达式来实现:

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')

但我更喜欢第一种方法。

关于sql - SQL查询中日期为空时如何提取最大日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51142883/

相关文章:

mysql - 在sql上写查询

java - Instant 和 ZonedDateTime 之间的兼容性

java - H2 数据库 Java Servlet 连接路径问题

mysql - 在右表上使用条件 SELECT 的条件 LEFT INNER JOIN 查询

mysql - 如何检索从年初至今到上周日的数据?

sql-server - nvarchar和varchar的空间分配

php - 以程序方式评估 DateTime::diff 对象

sql - SQL Server 数据库级触发器和服务器级触发器的区别

sql-server - 如何对由任意表达式描述的日期排序事件进行分组/窗口?

mysql - 如何找出sql server 2005中各个数据库的大小?