1. 程式人生 > >SQL---計算兩個日期之間的時間差

SQL---計算兩個日期之間的時間差

在進行日期處理的時候,有時會需要計算一下兩個日期之間相差幾年零幾個月,這裡記錄一下,如何用mysql資料庫和java結合,準確的拿到兩個日期之間的時間差。

1.mysql資料庫中,利用TIMESTAMPDIFF函式,拿到兩個日期之間相差的月數,當然,也可以拿到天數,年數,如下:

SELECT TIMESTAMPDIFF(DAY,'2012-10-01','2013-01-13') as dayDiff;

結果:104
SELECT TIMESTAMPDIFF(MONTH,'2011-05-01','2013-01-13') as monthDiff;

結果:20
SELECT TIMESTAMPDIFF(YEAR

,'2011-05-01','2013-01-13') as dayDiff;

結果:1

2.然後,在java程式碼中,對這個月數做個簡單的處理即可,如下:

  1. <span style="white-space:pre;"> </span>long monthCount = (long)map.get("monthDiff");  
  2.             String yearMonth = "";  
  3.             if(monthCount == 12){  
  4.                 yearMonth = "1年";  
  5.             }else
    if(monthCount < 12){  
  6.                 yearMonth = monthCount + "個月";  
  7.             }elseif(monthCount > 12){  
  8.                 yearMonth = monthCount/12L+"年"+monthCount%12L+"個月";  
  9.             }  
  10.             map.put("yearMonth",yearMonth);  
注意:從資料庫返回來的這個月份差,是個long型別的。

比如,monthCount = 20L時,這個yearMonth =“1年8個月”