mysql - 如何从两列中获取最大日期,或者如果任一列为空,则为空?

标签 mysql sql date select null

我在 MySQL 表中有两个日期列,代表两个用户处理的任务。日期列记录用户 1 同意任务的时间和用户 2 同意任务的时间,如果用户尚未同意任务,则可以为 NULL

我想生成任务同意的日期 - 除非两个用户都同意该任务,否则它应该为 NULL,或者如果他们都同意,则为两个日期中的最大值。

所以我想要一个生成的查询:

user_1_agreed  user_2_agreed  query_result
NULL           NULL           NULL
2014-01-02     NULL           NULL
NULL           2014-03-04     NULL
2014-01-02     2014-03-04     2014-03-04

我知道 MAXCOALESCEIF,但我在尝试找出如何将它们组合成给出以上内容。

最佳答案

greatest功能完全符合您的要求:

SELECT GREATEST(user_1_agreed, user_2_agreed)
FROM   my_table

关于mysql - 如何从两列中获取最大日期,或者如果任一列为空,则为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27602945/

相关文章:

mysql - 如何使用聚合函数进行左连接?

ruby-on-rails - Ruby - 获取两个日期之间的月份范围

OR 运算符中的 MySQL 性能

sql - 在 mysql 中将数据类型从日期更改为日期/时间?

mysql - 全文索引无法正常工作

sql - 排序规则冲突

当行在不同的列上匹配时,SQL 查询返回列的最大值

python - 如何在 Django 模型上定义任何一年的月份范围?

swift 4 从 ISO 字符串到自定义格式的日期?

php - PDOException - 找不到驱动程序 - 无法通过 php 更新数据库方案