MySQL供給了年夜量豐碩的函數,在MySQL的利用中經常會用到各類函數,本文講解的是常見的MySQL的日期與時候函數,本家兒要用于處置日期和時候值。
1.獲取當前日期和當前時候的函數
CURDATE()或CURRENT_DATE():獲取當前日期函數,返回值按“YYYY-MM-DD”或"YYYYMMDD"格局,格局按照函數在字符串或是數字語境而心猿意馬
CURTIME()或CURRENT_TIME():獲取當前時候,返回值按“HH:MM:SS”或"HHMMSS"格局,格局按照函數在字符串或是數字語境而心猿意馬
示例
SELECT CURDATE(),CURDATE()+0,CURRENT_DATE(),CURTIME(),CURTIME()+0,CURRENT_TIME();
2.獲取當前日期+時候的函數
CURRENT_TIMESTAMP()或LOCALTIME()或NOW()或SYSDATE():獲取當前日期+時候的函數,返回值按“YYYY-MM-DD HH:MM:SS”或"YYYYMMDDHHMMSS"格局,格局按照函數在字符串或是數字語境而心猿意馬
示例
SELECT CURRENT_TIMESTAMP(),LOCALTIME(),NOW(),SYSDATE(),CURRENT_TIMESTAMP()+0,LOCALTIME()+0,NOW()+0,SYSDATE()+0;
3.通俗時候戳轉UNIX時候戳,UNIX時候戳轉通俗時候戳函數
UNIX_TIMESTAMP([d]):通俗時候格局轉UNIX時候戳,d為可選項,不填的時辰返當前時候戳
FROM_UNIXTIME(str):UNIX時候戳轉為通俗時候格局。
示例
SELECT UNIX_TIMESTAMP(),UNIX_TIMESTAMP(NOW()),NOW(),FROM_UNIXTIME(UNIX_TIMESTAMP());
4.返回UTC(宿世界尺度時候)日期的函數,返回UTC時候的函數,返回值按“YYYY-MM-DD”或"YYYYMMDD"格局,格局按照函數在字符串或是數字語境而心猿意馬
UTC_DATE():返回UTC(宿世界尺度時候)日期的函數
UTC_TIME():返回UTC(宿世界尺度時候)時候的函數
示例
SELECT UTC_DATE(),UTC_TIME(),UTC_DATE()+0,UTC_TIME()+0;
5.獲取月份的函數
MONTH(d):獲取日期d的月份,阿拉伯值
MONTHNAME(d):獲取日期d的月份,英文值
示例
SELECT MONTH(NOW()),MONTHNAME(NOW());
6.獲取禮拜的函數
DAYNAME(d):獲取日期d的英文名稱
DAYOFWEEK(d):獲取日期d在一周中的索引,1-周日,2-周一.....7-周六
WEEKDAY(d):也是獲取日期d在一周中的索引,可是索引位置有所分歧,0-周一,1-周二...6-周日
示例
SELECT DAYNAME(NOW()),DAYOFWEEK(NOW()),WEEKDAY(NOW());
7.獲取當前是一年中的第幾個禮拜函數
WEEK(d,mode):計較某天位于一年中的第幾個禮拜,規模是0-53或1-53
WEEKOFYEAR(d,mode):計較某天位于一年中的第幾個禮拜,規模是1-53,半斤八兩于WEEK(d,3);
mode 的規模
0 - 周日 - 0~53 - 今年度中有一個周日
1 - 周一 - 0~53 - 今年度有3天以上
2 - 周日 - 1~53 - 今年度中有一個周日
3 - 周一 - 1~53 - 今年度有3天以上
4 - 周日 - 0~53 - 今年度有3天以上
5 - 周一 - 0~53 - 今年度有1個周一
6 - 周日 - 1~53 - 今年度有3天以上
7 - 周一 - 1~53 - 今年度有1個周一
示例
SELECT NOW(),WEEK(NOW()),WEEK(NOW(),0),WEEK(NOW(),1),WEEK(NOW(),3),WEEKOFYEAR(NOW());
8.獲取天數函數
DOYORYEAR(d):獲取日時候d是一年中的第幾天,規模是1-366
DOYOFMONTH(d):獲取日期時候d是當月中的第幾天,規模是1-31
DAYOFWEEK(d):獲取日期時候d是當周中的第幾天,規模是1-7,周日為1,周六為7
示例
SELECT NOW(),DAYOFYEAR(NOW()),DAYOFMONTH(NOW()),DAYOFWEEK(NOW());
9.計較日期的函數
DATE_ADD(d,INTERVAL expr type):日期加運算,type格局見下文
ADDDATE(d,INTERVAL expr type):日期加運算,type格局見下文
DATE_SUB(d,INTERVAL expr type):日期減運算,type格局見下文
SUBDATE(d,INTERVAL expr type):日期減運算,type格局見下文
ADDTIME(d,expr):時候加運算
SUBTIME(d,expr):時候減運算
DATEDIFF(d1,d2):兩個日時代的距離天數
type的格局
SECOND 秒 SECONDS
MINUTE 分鐘 MINUTES
HOUR 時候 HOURS
DAY 天 DAYS
MONTH 月 MONTHS
YEAR 年 YEARS
MINUTE_SECOND 分鐘和秒 "MINUTES:SECONDS"
HOUR_MINUTE 小時和分鐘 "HOURS:MINUTES"
DAY_HOUR 天和小時 "DAYS HOURS"
YEAR_MONTH 年和月 "YEARS-MONTHS"
HOUR_SECOND 小時, 分鐘, "HOURS:MINUTES:SECONDS"
DAY_MINUTE 天, 小時, 分鐘 "DAYS HOURS:MINUTES"
DAY_SECOND 天, 小時, 分鐘, 秒 "DAYS HOURS:MINUTES:SECONDS"
示例
SELECT NOW(),DATE_ADD(NOW(),INTERVAL 2 DAY),ADDDATE(NOW(),INTERVAL 300 SECOND);#當前時候添加兩天,添加300秒
SELECT NOW(),DATE_SUB(NOW(),INTERVAL 1 MONTH),SUBDATE(NOW(),INTERVAL 300 MINUTE);#當前時候削減一個月,削減300分鐘
SELECT NOW(),ADDTIME(NOW(),'1:1:1'),SUBTIME(NOW(),'2:2:2');#當前時候添加1小時1分1秒,當前時候削減2小時2分2秒
SELECT NOW(),DATEDIFF(NOW(),DATE_ADD(NOW(),INTERVAL 1 YEAR));#計較當前時候與一年后當前時候的日期差
10.日期格局化函數
日期格局化通配符申明
%a : 工作日的縮寫(Sun,Mon,...Sat)
%b : 月份的縮寫(Jun,Feb,...,Dec)
%c : 數字形式的月份(1,...,12)
%D : 帶有英文后綴的該月日期(1st,2nd,3rd....)
%d : 數字形式的日期,不足兩位前方補零(01,02,...,31)
%e : 數字形式的日期(1,...,31)
%f : 微秒
%H : 以24小時制暗示當前是幾多點,不足兩位前方補零(01,02,...,24)
%h,%I: 以12小時制暗示當前是幾多點,不足兩位前方補零(01,02,...,12)
%i : 數字形式的分鐘(00,01,...,59)
%j : 一年中的第幾天(001,...,366)
%k : 以24小時制暗示當前是幾多點(1,2,...,24)
%l : 以12小時制暗示當前是幾多點(1,2,...,12)
%M : 月份名稱(Junuary,...,December)
%m : 月份名稱數字形式(01,...,12)
%p : AM/PM
%r : 時候(12小時制,如9:00:00 AM)
%S,%s : 秒的數字形式(00,01,...,59)
%T : 時候(24小時制,如9:00:00)
%U : 第幾周(00,53),周日為第一天
%u : 第幾周(00,53),周一為第一天
%V : 第幾周(01,53),周一為第一天,和%X一路利用
%v : 第幾周(01,53),周一為第一天,和%x一路利用
%W : 工作日名稱(周日,周一...)
%w : 一周中的每日(0=周日...6=周六)
%X : 該周的年份,周日為第一天,數字形式4位數,和%V一路用
%x : 該周的年份,周一為第一天,數字形式4位數,和%v一路用
%Y : 4位數字形式的年份
%y : 2位數字形式的年份
%% :%符號
DATE_FORMAT():日期格局化函數
示例
SELECT DATE_FORMAT(NOW(),'%Y %m %d'),DATE_FORMAT(NOW(),'%X %V');
0 篇文章
如果覺得我的文章對您有用,請隨意打賞。你的支持將鼓勵我繼續創作!