擴展php中的時間函數DateDiff和DateAdd
function DateDiff($part, $begin, $end) { $diff = strtotime($end) - strtotime($begin); switch($part) { case "y": $retval = bcdiv($diff, (60 * 60 * 24 * 365)); break; case "m": $retval = bcdiv($diff, (60 * 60 * 24 * 30)); break; case "w": $retval = bcdiv($diff, (60 * 60 * 24 * 7)); break; case "d": $retval = bcdiv($diff, (60 * 60 * 24)); break; case "h": $retval = bcdiv($diff, (60 * 60)); break; case "n": $retval = bcdiv($diff, 60); break; case "s": $retval = $diff; break; } return $retval; } function DateAdd($part, $number, $date) { $date_array = getdate(strtotime($date)); $hor = $date_array["hours"]; $min = $date_array["minutes"]; $sec = $date_array["seconds"]; $mon = $date_array["mon"]; $day = $date_array["mday"]; $yar = $date_array["year"]; switch($part) { case "y": $yar += $number; break; case "q": $mon += ($number * 3); break; case "m": $mon += $number; break; case "w": $day += ($number * 7); break; case "d": $day += $number; break; case "h": $hor += $number; break; case "n": $min += $number; break; case "s": $sec += $number; break; } return date("Y-m-d H:i:s", mktime($hor, $min, $sec, $mon, $day, $yar)); } Function DateAdd($part, $n, $date) { switch($part) { case "y": $val = date("Y-m-d H:i:s", strtotime($date ." +$n year")); break; case "m": $val = date("Y-m-d H:i:s", strtotime($date ." +$n month")); break; case "w": $val = date("Y-m-d H:i:s", strtotime($date ." +$n week")); break; case "d": $val = date("Y-m-d H:i:s", strtotime($date ." +$n day")); break; case "h": $val = date("Y-m-d H:i:s", strtotime($date ." +$n hour")); break; case "n": $val = date("Y-m-d H:i:s", strtotime($date ." +$n minute")); break; case "s": $val = date("Y-m-d H:i:s", strtotime($date ." +$n second")); break; } return $val; }
datediff是計算兩個時間間的差,如差幾天或是幾個月,或是幾年等
select datediff(day,'2008.9.2','2008.10.28')
dateadd則是算出在已知時間的基礎上再加多少天是幾月幾日.
select dateadd(year,10,getdate())
select dateadd(month,10,getdate())
select dateadd(day,10,getdate())
返回兩個日期之間的時間間隔。
語法
DateDiff(interval, date1, date2 [,firstdayofweek[, firstweekofyear]])
DateDiff 函數的語法有以下參數:
參數 描述
interval 必選。字符串表達式,表示用於計算 date1 和 date2 之間的時間間隔。有關數值,請參閱“設置”部分。
date1, date2 必選。日期表達式。用於計算的兩個日期。
firstdayofweek 可選。指定星期中第一天的常數。如果沒有指定,則默認為星期日。有關數值,請參閱“設置”部分。
firstweekofyear 可選。指定一年中第一周的常數。如果沒有指定,則默認為 1 月 1 日所在的星期。有關數值,請參閱“設置”部分。
設置
interval 參數可以有以下值:
設置 描述
yyyy 年
q 季度
m 月
y 一年的日數
d 日
w 一周的日數
ww 周
h 小時
m 分鐘
s 秒