首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 時間函數與運算完全指南

     編輯:MySQL 資料庫相關知識

一、取得當前時間

函數返回格式備註
NOW()YYYY-MM-DD HH:MM:SS同 SYSDATE()、CURRENT_TIMESTAMP
CURRENT_DATEYYYY-MM-DD 或 YYYYMMDD視上下文為字串或數字
CURRENT_TIMEHH:MM:SS 或 HHMMSS同上
SELECT NOW();        -- '1997-12-15 23:50:26'
SELECT NOW() + 0;    -- 19971215235026

二、日期時間格式化

DATE_FORMAT(date, format)   -- 日期時間格式化
TIME_FORMAT(time, format)   -- 僅時間部分格式化

常用格式符

符號含義
%Y四位年份
%m月份 (01-12)
%d日期 (00-31)
%H小時 24制 (00-23)
%i分鐘 (00-59)
%s秒 (00-59)
%W星期名稱
%M月份名稱
%D帶英文後綴的日期
%r12制時間 (hh:mm:ss AM/PM)
%T24制時間 (hh:mm:ss)
SELECT DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y');
-- 'Saturday October 1997'
SELECT DATE_FORMAT('1997-10-04 22:23:00', '%H:%i:%s');
-- '22:23:00'

三、日期部件提取

函數說明
TO_DAYS(date)從公元 0 年起的天數
FROM_DAYS(N)天數轉日期
DAYOFWEEK(date)星期索引 (1=Sun)
WEEKDAY(date)星期索引 (0=Mon)
DAYOFMONTH(date)月內日期 (1-31)
DAYOFYEAR(date)年內天數 (1-366)
MONTH(date)月份 (1-12)
DAYNAME(date)星期名稱
MONTHNAME(date)月份名稱
QUARTER(date)季度 (1-4)
WEEK(date[,mode])週數 (mode 0=Sun, 1=Mon)
YEAR(date)年份
HOUR/MINUTE/SECOND(time)時/分/秒

四、秒數轉換

SEC_TO_TIME(seconds)  -- 秒轉 'HH:MM:SS' 或 HHMMSS
TIME_TO_SEC(time)     -- 時間轉總秒數
SELECT SEC_TO_TIME(2378);   -- '00:39:38'
SELECT TIME_TO_SEC('22:23:00'); -- 80580

五、Unix 時間戳互轉

UNIX_TIMESTAMP([date])      -- 日期轉秒數 (從 1970-01-01)
FROM_UNIXTIME(unix_ts[,fmt]) -- 秒數轉日期字串
SELECT UNIX_TIMESTAMP('1997-10-04 22:23:00'); -- 875996580
SELECT FROM_UNIXTIME(875996580); -- '1997-10-04 22:23:00'
SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(), '%Y %D %M %h:%i:%s %x'); -- 格式化輸出

六、實戰更新範例

在原時間基礎上加 20 分鐘

UPDATE anpai SET tttime = FROM_UNIXTIME(UNIX_TIMESTAMP(endtime) + 60*20, '%Y-%m-%d %H:%i:%s');

日期時間分離欄位整體加 8 小時(時區修正)

UPDATE gps_cell SET
  GPSDate = FROM_UNIXTIME(UNIX_TIMESTAMP(CONCAT_WS(' ', GPSDate, GPSTime)) + 3600*8, '%Y-%m-%d'),
  GPSTime = FROM_UNIXTIME(UNIX_TIMESTAMP(CONCAT_WS(' ', GPSDate, GPSTime)) + 3600*8, '%H:%i:%s');
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved