首页 > 解决方案 > 存在空值的两个不同列的较大值

问题描述

我正在比较两个关于错误的日期列,一个是已解决的错误,一个是已关闭的错误。我想要两者中的较大者,但有空值(当尚未解决或关闭错误时)。我如何在忽略空值的情况下取两者中的较大者?我看到了其他解决方案,但是您必须在代码中指定日期,这在我的数据集中无法做到这一点。日期格式为 mm/dd/yy hh:mm:ss PM/AM

(GREATEST(dtResolved , dtClosed))

标签: mysqlsql

解决方案


这个怎么样:

GREATEST(COALESCE(dtResolved , dtClosed), COALESCE(dtClosed, dtResolved))

使用这个逻辑,如果两个日期都不是NULL,那么你会得到两者中较大的一个。如果一个是NULL,那么你会得到非NULL约会。

编辑:

日期格式为 mm/dd/yy hh:mm:ss PM/AM

这听起来像您将日期存储为文本,这总是一个坏主意。要使上述建议起作用,您必须先将文本转换为日期:

STR_TO_DATE('02/28/2014 09:30:05 AM', '%m/%d/%Y %r')

推荐阅读