2017-11-23 10 views
0

1860-07-21と1920-04-23の2つの日付があります。クエリのこの部分では は、私は日付の間の日数の合計を取得:mysqlクエリで2つの日付から年月日と残余日を取得する方法

DATEDIFF(str_to_date(concat(Right(FirstTime,2),"-", Mid(FirstTime,6,2),"-",Left(FirstTime,4)),'%d-%m-%Y'), str_to_date(concat(Right(Born,2),"-", Mid(Born,6,2),"-",Left(Born,4)),'%d-%m-%Y')) as Days 

結果は21825日です。上記のクエリ部分を59年と277日に変更するにはどうすればよいですか?

+0

'FirstTime'、' Born'ストアの日付値は、あなたはこれらのフィールドの 'DATE'データ型を使用する必要があります。 –

答えて

0

使用TIMESTAMPDIFF()

SELECT 

    @yearsDiff:=(TIMESTAMPDIFF(
    YEAR, 
    str_to_date(concat(Right(FirstTime,2),'-', Mid(FirstTime,6,2),'-',Left(FirstTime,4)),'%d-%m-%Y'), 
    str_to_date(concat(Right(Born,2),'-', Mid(Born,6,2),'-',Left(Born,4)),'%d-%m-%Y') 
)) as YEARS, 

    TIMESTAMPDIFF(
    DAY, 
    DATE_ADD(str_to_date(concat(Right(FirstTime,2),'-', Mid(FirstTime,6,2),'-',Left(FirstTime,4)),'%d-%m-%Y'), INTERVAL @yearsDiff YEAR), 
    str_to_date(concat(Right(Born,2),'-', Mid(Born,6,2),'-',Left(Born,4)),'%d-%m-%Y') 
) as DAYS 

FROM (SELECT '1860-07-21' AS FirstTime, '1920-04-23' AS Born) AS t 
+0

数字の前に雑音のある " - "(マイナス)が表示され、2番目のフィールドに277の残存日数の代わりに合計日数(21825)が表示されます。 – Idro

+0

更新された回答。 – terales

+0

それはあなたを助けましたか? – terales

関連する問題