首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

PHP 實作 SQL Server DATEADD 與 DATEDIFF 函數

     編輯:關於SqlServer

dateadd 函數

function dateadd($part, $n, $datetime) {
    $part = strtolower($part);
    $y = date('Y', $datetime);
    $m = date('m', $datetime);
    $d = date('d', $datetime);
    $h = date('H', $datetime);
    $mi = date('i', $datetime);
    $s = date('s', $datetime);

    switch ($part) {
        case 'year':   $y += $n; break;
        case 'month':  $m += $n; break;
        case 'day':    $d += $n; break;
        case 'hour':   $h += $n; break;
        case 'min':    $mi += $n; break;
        case 'sec':    $s += $n; break;
        default:       return 0;
    }
    return mktime($h, $mi, $s, $m, $d, $y);
}

datediff 函數

function datediff($part, $date1, $date2) {
    $part = strtolower($part);
    $y1 = date('Y', $date1); $y2 = date('Y', $date2);
    $m1 = date('m', $date1); $m2 = date('m', $date2);
    $d1 = date('d', $date1); $d2 = date('d', $date2);
    $h1 = date('H', $date1); $h2 = date('H', $date2);
    $mi1 = date('i', $date1); $mi2 = date('i', $date2);
    $s1 = date('s', $date1); $s2 = date('s', $date2);

    switch ($part) {
        case 'year':  return $y2 - $y1;
        case 'month': return ($y2 - $y1) * 12 + $m2 - $m1;
        case 'day':   return (mktime(0,0,0,$m2,$d2,$y2) - mktime(0,0,0,$m1,$d1,$y1)) / 86400;
        case 'hour':  return (mktime($h2,0,0,$m2,$d2,$y2) - mktime($h1,0,0,$m1,$d1,$y1)) / 3600;
        case 'min':   return (mktime($h2,$mi2,0,$m2,$d2,$y2) - mktime($h1,$mi1,0,$m1,$d1,$y1)) / 60;
        case 'sec':   return $date2 - $date1;
        default:      return 0;
    }
}

使用範例

$now = mktime(0,0,0,date('m'),date('d'),date('Y'));
$future = dateadd('month', 3, $now);
$diff = datediff('day', $now, $future);  // 約 90

注意

  • PHP 5.3+ 建議直接使用 DateTime 類別與 DateInterval,功能更完整且處理閏年/時區正確。
  • 上述函數為模擬 SQL Server 行為,月份跨界邏輯以 mktime 自動修正。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved