Tôi đang cố gắng lấy ngày và thời gian giữa Thời gian vay và Ngày trả tiền. Tôi đã sử dụng hàm ngày và giờ của PHP, nhưng nó không phải lúc nào cũng chính xác. Làm thế nào tôi có thể làm điều này một cách chính xác trong MySQL?Làm thế nào để chuyển đổi số ngày nhất định thành năm, tháng và ngày trong MySQL?
Hãy giả định hai ngày, The vay lấy ngày
2009-05-24
và ngày trở lại cho vay
2012-04-30
Tôi viết truy vấn MySQL
SELECT DATEDIFF('2012-04-30', '2009-05-24') `total_days`;
trả lại 1072 ngày, tức là khoảng 2 năm, 11 tháng, 12 ngày.
Vui lòng không trả lời bằng mã PHP, tôi đã dùng thử. Đây là mã số .
Hàm bên dưới sử dụng PHP> = 5.3 hàm và chuyển đổi ngày thành năm, tháng và ngày.
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' : '') : '');
}
Hàm bên dưới sử dụng PHP> = 5.2 chức năng và chuyển đổi ngày thành năm, tháng và ngày.
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' : '') : '');
}
bao nhiêu ngày là có trong một tháng? 28? 29? 30? 31? – liquorvicar
Có thể bạn sẽ cần một thủ tục hoặc hàm được lưu trữ để thực hiện điều đó trong MySQL. – liquorvicar