今偶遇這樣一場景,兩列都是日期時間類型,需要通過判斷這兩個日期的大小來取值。為了更好地說明這個流程,我們就假設去兩列日期時間中較大者。那如何通過一條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)。