首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP MySQL 日期運算技巧:用 DATE_ADD 替代 PHP 計算、利用數據庫函數減少往返

     編輯:PHP 綜合知識

場景

需求:給定日期字符串,加 1 年得到新日期。

原文做法(PHP 端計算)

<?php
$data_time = "1998-12-31 23:59:59";
// PHP 計算
$new = date('Y-m-d H:i:s', strtotime('+1 year', strtotime($data_time)));

推薦:MySQL 端計算

<?php
$pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass');
$stmt = $pdo->prepare("SELECT DATE_ADD(?, INTERVAL 1 YEAR) AS new_date");
$stmt->execute([$data_time]);
$row = $stmt->fetch();
echo $row['new_date']; // 1999-12-31 23:59:59

常用 MySQL 日期時間函數速查

函數用途示例
DATE_ADD(date, INTERVAL expr unit)加間隔DATE_ADD(NOW(), INTERVAL 1 MONTH)
DATE_SUB(date, INTERVAL expr unit)減間隔DATE_SUB(NOW(), INTERVAL 7 DAY)
DATEDIFF(date1, date2)天數差DATEDIFF('2024-01-15','2024-01-01')=14
TIMESTAMPDIFF(unit, dt1, dt2)指定單位差TIMESTAMPDIFF(MONTH, '2023-01-01', NOW())
DATE_FORMAT(date, format)格式化輸出DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i')
STR_TO_DATE(str, format)字符串轉日期STR_TO_DATE('15/01/2024', '%d/%m/%Y')
LAST_DAY(date)月份最後一天LAST_DAY('2024-02-10')=2024-02-29
QUARTER(date)季度QUARTER(NOW())
WEEK(date, mode)周數WEEK(NOW(), 1)

單位關鍵字

MICROSECOND, SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, YEAR
SECOND_MICROSECOND, MINUTE_MICROSECOND, MINUTE_SECOND, HOUR_MICROSECOND,
HOUR_SECOND, HOUR_MINUTE, DAY_MICROSECOND, DAY_SECOND, DAY_MINUTE, DAY_HOUR,
YEAR_MONTH

最佳實踐

  • **業務邏輯下推**:日期運算、聚合統計、條件過濾盡量在 SQL 完成,減少數據傳輸與 PHP 計算。
  • **時區一致性**:數據庫、PHP、應用層統一使用 UTC 存儲,展示層按用戶時區轉換。
  • **索引利用**:WHERE created_at >= DATE_SUB(NOW(), INTERVAL 1 MONTH) 可用索引;WHERE DATE(created_at) = CURDATE() 導致全表掃描。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved