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)。
阅读是一种修养,分享是一种美德。