Wie konvertiere ich eine bestimmte Anzahl von Tagen in Jahre, Monate und Tage in MySQL?
Ich versuche, das Datum und die Zeitdauer zwischen dem aufgenommenen Darlehen und dem bezahlten Datum zu ermitteln. Ich habe die Datums- und Zeitfunktionen von PHP verwendet, sie sind jedoch nicht immer korrekt. Wie kann ich das in MySQL genau machen?
Nehmen wir zwei Daten an: Das Datum der Ausleihe
2009-05-24
und das Rückgabedatum des Darlehens
2012-04-30
Ich schreibe eine MySQL-Abfrage
SELECT DATEDIFF('2012-04-30', '2009-05-24') `total_days`;
Rückkehr 1072 Tage, das sind ungefähr 2 Jahre, 11 Monate, 12 Tage.
Bitte antworten Sie nicht mit PHP-Code, ich probiere es bereits. Hier ist der Code.
Die folgende Funktion verwendet PHP> = 5.3-Funktionen und konvertiert Tage in Jahre, Monate und Tage.
function date_interval($date1, $date2)
{
$date1 = new DateTime($date1);
$date2 = new DateTime($date2);
$interval = date_diff($date2, $date1);
return ((($y = $interval->format('%y')) > 0) ? $y . ' Year' . ($y > 1 ? 's' : '') . ', ' : '') . ((($m = $interval->format('%m')) > 0) ? $m . ' Month' . ($m > 1 ? 's' : '') . ', ' : '') . ((($d = $interval->format('%d')) > 0) ? $d . ' Day' . ($d > 1 ? 's' : '') : '');
}
Die folgende Funktion verwendet PHP> = 5.2-Funktionen und konvertiert Tage in Jahre, Monate und Tage.
function date_interval($date1, $date2)
{
$diff = abs(strtotime($date2) - strtotime($date1));
$years = floor($diff / (365 * 60 * 60 * 24));
$months = floor(($diff - $years * 365 * 60 * 60 * 24) / (30 * 60 * 60 * 24));
$days = floor(($diff - $years * 365 * 60 * 60 * 24 - $months * 30 * 60 * 60 * 24) / (60 * 60 * 24));
return (($years > 0) ? $years . ' Year' . ($years > 1 ? 's' : '') . ', ' : '') . (($months > 0) ? $months . ' Month' . ($months > 1 ? 's' : '') . ', ' : '') . (($days > 0) ? $days . ' Day' . ($days > 1 ? 's' : '') : '');
}