MySQL取两列的较小值或者较大值

  今偶遇这样一场景,两列都是日期时间类型,需要通过判断这两个日期的大小来取值。为了更好地说明这个流程,我们就假设去两列日期时间中较大者。那如何通过一条SQL语句搞定呢?此时,就需要借助IF-ELSE的思路了,请看示例代码:

  (1)方式一

SELECT if(col_date_1 > col_date_2, col_date_1, col_date_2) as max_time
FROM table_name
WHERE some_col = 'some_value'

  若是要从三个日期时间中挑选出最大时间值,那又如何处理呢?此时,可以借助IF的嵌套,请看示例代码:

SELECT if(col_date_1 > col_date_2, if(col_date_1 > col_date_3, col_date_1, col_date_3), if(col_date_2 > col_date_3, col_date_2, col_date_3) as max_time
FROM table_name
WHERE some_col = 'some_value'

  (2)方式二

SELECT case when col_date_1 > col_date_2 then col_date_1 else col_date_2 end as max_time
FROM table_name
WHERE some_col = 'some_value'

  通过上述语句就可以完成想要的结果了,若还有其它简洁方式,可以共享一下,谢谢。

  若想要当前时间加一年,那么可以通过DATE_ADD函数来处理,例如DATE_ADD(NOW(), interval 1 year)。

 

posted @ 2020-05-15 23:23  晒太阳的兔子很忙  阅读(7491)  评论(0编辑  收藏  举报