#MySQL 日期時間函數(shù)
#函數(shù)名 描述 實例
-- ADDDATE(d,n) 計算起始日期 d 加上 n 天的日期
SELECT ADDDATE("2017-06-15", INTERVAL 10 DAY);
#->2017-06-25
-- ADDTIME(t,n) n 是一個時間表達式,時間 t 加上時間表達式 n
#加 5 秒:
SELECT ADDTIME('2011-11-11 11:11:11', 5);
#->2011-11-11 11:11:16 (秒)
#添加 2 小時, 10 分鐘, 5 秒:
SELECT ADDTIME("2020-06-15 09:34:21", "2:10:5");
#-> 2020-06-15 11:44:26
-- CURDATE() 返回當前日期
SELECT CURDATE();
#-> 2018-09-19
-- CURRENT_DATE() 返回當前日期
SELECT CURRENT_DATE();
# -> 2018-09-19
-- CURRENT_TIME 返回當前時間
SELECT CURRENT_TIME();
#-> 19:59:02
-- CURRENT_TIMESTAMP() 返回當前日期和時間
SELECT CURRENT_TIMESTAMP();
#-> 2018-09-19 20:57:43
-- CURTIME() 返回當前時間
SELECT CURTIME();
#-> 19:59:02
-- DATE() 從日期或日期時間表達式中提取日期值
SELECT DATE("2017-06-15");
#-> 2017-06-15
-- DATEDIFF(d1,d2) 計算日期 d1->d2 之間相隔的天數(shù)
SELECT DATEDIFF('2001-01-01','2001-02-02');
#-> -32
-- DATE_ADD(d,INTERVAL expr type) 計算起始日期 d 加上一個時間段后的日期,type 值可以是:
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
MINUTE_SECOND
HOUR_SECOND
HOUR_MINUTE
DAY_SECOND
DAY_MINUTE
DAY_HOUR
YEAR_MONTH
SELECT DATE_ADD("2017-06-15", INTERVAL 10 DAY 15 MINUTE );
#-> 2017-06-25
SELECT DATE_ADD("2017-06-15 09:34:21", INTERVAL 15 MINUTE);
#-> 2017-06-15 09:49:21
SELECT DATE_ADD("2017-06-15 09:34:21", INTERVAL 3 HOUR);
#->2017-06-15 12:34:21
SELECT DATE_ADD("2017-06-15 09:34:21", INTERVAL -3 HOUR);
#->2017-06-15 06:34:21
-- DATE_FORMAT(d,f) 按表達式 f的要求顯示日期 d
SELECT DATE_FORMAT('2011-11-11 18:11:11','%Y/%m/%d %r');
#-> 2011/11/11 06:11:11 PM
SELECT DATE_FORMAT('2011-11-11 18:11:11','%Y-%m-%d %H:%m:%s');
#-> 2011-11-11 18:11:11
-- DATE_SUB(date,INTERVAL expr type) 函數(shù)從日期減去指定的時間間隔。
#Orders 表中 OrderDate 字段減去 2 天:
SELECT OrderId,DATE_SUB(OrderDate,INTERVAL 2 DAY) AS OrderPayDate
FROM Orders;
-- DAY(d) 返回日期值 d 的日期部分
SELECT DAY("2017-06-15");
#-> 15
-- DAYNAME(d) 返回日期 d 是星期幾,如 Monday,Tuesday
SELECT DAYNAME('2011-11-11 11:11:11');
#->Friday
-- DAYOFMONTH(d) 計算日期 d 是本月的第幾天
SELECT DAYOFMONTH('2011-11-11 11:11:11');
#->11
-- DAYOFWEEK(d) 日期 d 今天是星期幾,1 星期日,2 星期一,以此類推
SELECT DAYOFWEEK('2011-11-11 11:11:11');
#->6
-- DAYOFYEAR(d) 計算日期 d 是本年的第幾天
SELECT DAYOFYEAR('2011-11-11 11:11:11');
#->315
-- EXTRACT(type FROM d) 從日期 d 中獲取指定的值,type 指定返回的值。
type可取值為:
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;
SELECT EXTRACT(MINUTE FROM '2011-11-11 11:11:11');
#-> 11
-- FROM_DAYS(n) 計算從 0000 年 1 月 1 日開始 n 天后的日期
SELECT FROM_DAYS(1111);
#-> 0003-01-16
-- HOUR(t) 返回 t 中的小時值
SELECT HOUR('01:22:36');
#-> 1
-- LAST_DAY(d) 返回給給定日期的那一月份的最后一天
SELECT LAST_DAY("2017-06-20");
#-> 2017-06-30
-- LOCALTIME() 返回當前日期和時間
SELECT LOCALTIME();
#-> 2018-09-19 20:57:43
-- LOCALTIMESTAMP() 返回當前日期和時間
SELECT LOCALTIMESTAMP();
#-> 2018-09-19 20:57:43
-- MAKEDATE(year, day-of-year) 基于給定參數(shù)年份 year 和所在年中的天數(shù)序號 day-of-year 返回一個日期
SELECT MAKEDATE(2017, 3);
#-> 2017-01-03
-- MAKETIME(hour, minute, second) 組合時間,參數(shù)分別為小時、分鐘、秒
SELECT MAKETIME(11, 35, 4);
#-> 11:35:04
-- MICROSECOND(date) 返回日期參數(shù)所對應的微秒數(shù)
SELECT MICROSECOND("2017-06-20 09:34:25.000023");
#-> 23
-- MINUTE(t) 返回 t 中的分鐘值
SELECT MINUTE('1:2:3');
#-> 2
-- MONTHNAME(d) 返回日期當中的月份名稱,如 November
SELECT MONTHNAME('2011-11-11 11:11:11');
#-> November
-- MONTH(d) 返回日期d中的月份值,1 到 12
SELECT MONTH('2011-11-11 11:11:11');
#->11
-- NOW() 返回當前日期和時間
SELECT NOW();
#-> 2018-09-19 20:57:43
# PERIOD_ADD(period, number) 為 年-月 組合日期添加一個時段
SELECT PERIOD_ADD(201703, 5);
#-> 201708
-- PERIOD_DIFF(period1, period2) 返回兩個時段之間的月份差值天數(shù)
SELECT PERIOD_DIFF(201710, 201703);
#-> 7
-- QUARTER(d) 返回日期d是第幾季節(jié),返回 1 到 4
SELECT QUARTER('2011-11-11 11:11:11');
#-> 4
-- SECOND(t) 返回 t 中的秒鐘值
SELECT SECOND('1:2:3')
#-> 3
-- SEC_TO_TIME(s) 將以秒為單位的時間 s 轉換為時分秒的格式
SELECT SEC_TO_TIME(4320);
#-> 01:12:00
-- STR_TO_DATE(string, format_mask) 將字符串轉變?yōu)槿掌?/p>
SELECT STR_TO_DATE("August 10 2017", "%M %d %Y");
#-> 2017-08-10
-- SUBDATE(d,n) 日期 d 減去 n 天后的日期
SELECT SUBDATE('2011-11-11 11:11:11', 1);
#->2011-11-10 11:11:11 (默認是天)
-- SUBTIME(t,n) 時間 t 減去 n 秒的時間
SELECT SUBTIME('2011-11-11 11:11:11', 5);
#->2011-11-11 11:11:06 (秒)
-- SYSDATE() 返回當前日期和時間
SELECT SYSDATE();
#-> 2018-09-19 20:57:43
-- TIME(expression) 提取傳入表達式的時間部分
SELECT TIME("19:30:10");
#-> 19:30:10
-- TIME_FORMAT(t,f) 按表達式 f 的要求顯示時間 t
SELECT TIME_FORMAT('11:11:11','%r');
#11:11:11 AM
-- TIME_TO_SEC(t) 將時間 t 轉換為秒
SELECT TIME_TO_SEC('1:12:00');
#-> 4320
-- TIMEDIFF(time1, time2) 計算時間差值
SELECT TIMEDIFF("15:19:11", "13:10:10");
#-> 02:09:01
-- TIMESTAMP(expression, interval) 單個參數(shù)時,函數(shù)返回日期或日期時間表達式;有2個參數(shù)時,將參數(shù)加和
SELECT TIMESTAMP("2017-07-23", "13:10:11");
#-> 2017-07-23 13:10:11
-- TO_DAYS(d) 計算日期 d 距離 0000 年 1 月 1 日的天數(shù)
SELECT TO_DAYS('0001-01-01 01:01:01');
#-> 366
-- WEEK(d) 計算日期 d 是本年的第幾個星期,范圍是 0 到 53
SELECT WEEK('2011-11-11 11:11:11');
#-> 45
-- WEEKDAY(d) 日期 d 是星期幾,0 表示星期一,1 表示星期二
SELECT WEEKDAY("2017-06-15");
#-> 3
-- WEEKOFYEAR(d) 計算日期 d 是本年的第幾個星期,范圍是 0 到 53
SELECT WEEKOFYEAR('2011-11-11 11:11:11');
#-> 45
-- YEAR(d) 返回年份
SELECT YEAR("2017-06-15");
#-> 2017
-- YEARWEEK(date, mode) 返回年份及第幾周(0到53),mode 中 0 表示周天,1表示周一,以此類推
SELECT YEARWEEK("2017-06-15");
#-> 201724
-- 練習:查詢每位員工的工齡(年):ename,hiredate,工齡
select ename 員工姓名, hiredate 入職日期, timestampdiff(year,hiredate,curdate()) 工齡
from emp ;








暫無數(shù)據(jù)