mysql - 存在空值的两个不同列的较大值
问题描述
我正在比较两个关于错误的日期列,一个是已解决的错误,一个是已关闭的错误。我想要两者中的较大者,但有空值(当尚未解决或关闭错误时)。我如何在忽略空值的情况下取两者中的较大者?我看到了其他解决方案,但是您必须在代码中指定日期,这在我的数据集中无法做到这一点。日期格式为 mm/dd/yy hh:mm:ss PM/AM
(GREATEST(dtResolved , dtClosed))
解决方案
这个怎么样:
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')