前言
?歡迎來到小K的MySQL專欄,本節(jié)將為大家?guī)鞰ySQL日期時(shí)間、條件判斷、系統(tǒng)信息、加密、進(jìn)制轉(zhuǎn)換和IP地址轉(zhuǎn)換函數(shù)的講解?
一、日期和時(shí)間函數(shù)
函數(shù) | 作用 |
---|---|
CURDATE(),CURRENT_DATE() | 返回當(dāng)前日期 |
CURTIME(),CURRENT_TIME() | 返回當(dāng)前時(shí)間 |
NOW(),CURRENT_TIMESTAMP(),LOCALTIME(), SYSDATE(),LOCALTIMESTAMP() |
返回會當(dāng)前日期和事件 |
YEAR(日期) | 返回日期中的年份 |
MONTH(日期) | 返回日期中的月份[1,12] |
DAY(日期) | 返回日期中的天[1,31] |
HOUR(時(shí)間) | 返回時(shí)間中的小時(shí) |
MINUTE(時(shí)間) | 返回時(shí)間中的分鐘 |
SECOND(時(shí)間) | 返回時(shí)間中的秒 |
DAYOFWEEK(日期) | 返回星期幾,1星期日,2星期一 |
WEEKDAY(日期) | 返回星期幾,0星期一,1星期二 |
DAYOFYEAR(日期) | 計(jì)算指定日期是本年第幾天 |
DAYOFMONTH(日期) | 計(jì)算指定日期是本月第幾天 |
QUARTER(日期) | 計(jì)算指定日期是第幾季度 |
TIME_TO_SEC(time) | 將指定時(shí)間轉(zhuǎn)換為秒 |
SEC_TO_TIME(sec) | 將以秒為單位的時(shí)間轉(zhuǎn)換為時(shí)分秒的格式 |
DATEDIFF(d1,d2) | 計(jì)算兩個(gè)日期相隔的天數(shù) |
ADDDATE(date,n) | 計(jì)算指定日期加上n天后的日期 |
SUBDATE(date,n) | 計(jì)算指定日期減去n天后的日期 |
ADDTIME(time,n) | 計(jì)算指定時(shí)間加上n秒后的時(shí)間 |
SUBTIME(time,n) | 計(jì)算指定時(shí)間減去n秒后的時(shí)間 |
DATE_FORMAT(date,f) | 按格式返回日期 |
TIME_FORMAT(time,f) | 按格式返回時(shí)間 |
?日期和時(shí)間函數(shù)練習(xí):
-
CURDATE(),CURRENT_DATE()
,返回當(dāng)前日期CURTIME(),CURRENT_TIME()
,返回當(dāng)前時(shí)間NOW(),CURRENT_TIMESTAMP(),LOCALTIME(),SYSDATE(),LOCALTIMESTAMP()
,返回會當(dāng)前日期和事件SELECT CURDATE(),CURTIME(),NOW(),LOCALTIME(),SYSDATE();
-
MONTH
(日期) : 返回日期中的月份[1,12],DAY
(日期) : 返回日期中的天[1,31],HOUR
(時(shí)間) : 返回時(shí)間中的小時(shí),MINUTE
(時(shí)間) : 返回時(shí)間中的分鐘,SECOND
(時(shí)間) : 返回時(shí)間中的秒SELECT YEAR(NOW()),MONTH(NOW()),DAY(NOW()),HOUR(NOW()),MINUTE(NOW()),SECOND(NOW());
-
DAYOFWEEK
:(日期) 返回星期幾,1星期日,2星期一;WEEKDAY
(日期):返回星期幾,0星期一,1星期二SELECT DAYOFWEEK(NOW()),WEEKDAY(NOW());
-
DAYOFYEAR
(日期):計(jì)算指定日期是本年第幾天;DAYOFMONTH(日期)
: 計(jì)算指定日期是本月第幾天;QUARTER
(日期) :計(jì)算指定日期是第幾季度SELECT DAYOFYEAR(NOW()),DAYOFMONTH(NOW()),QUARTER(NOW());
-
TIME_TO_SEC(time)
:將指定時(shí)間轉(zhuǎn)換為秒;SEC_TO_TIME(sec)
: 將以秒為單位的時(shí)間轉(zhuǎn)換為時(shí)分秒的格式SELECT TIME_TO_SEC('01:00:00'); SELECT SEC_TO_TIME('3600');
-
ADDDATE(date,n)
: 計(jì)算指定日期加上n天后的日期;SUBDATE(date,n)
: 計(jì)算指定日期減去n天后的日期;ADDTIME(time,n)
: 計(jì)算指定時(shí)間加上n秒后的時(shí)間;SUBTIME(time,n)
: 計(jì)算指定時(shí)間減去n秒后的時(shí)間SELECT DATEDIFF(CURDATE(),'2023/6/5'); SELECT ADDDATE(CURDATE(),'2'),SUBDATE(CURDATE(),'2'); SELECT ADDTIME(CURTIME(),'2'),SUBTIME(CURTIME(),'2');
-
DATE_FORMAT(date,f)
: 按格式返回日期;TIME_FORMAT(time,f)
:按格式返回時(shí)間,注意:%Y表示年份為4位,%y表示兩位,分鐘的格式化字符要用%iSELECT DATE_FORMAT(CURDATE(),'%Y-%m-%d'); SELECT DATE_FORMAT(CURDATE(),'%y-%m-%d'); SELECT TIME_FORMAT(CURTIME(),'%h-%i-%s');
?效果如下:
二、條件判斷函數(shù)
函數(shù) | 作用 |
---|---|
IF(expr,v1,v2) | 如果表達(dá)式expr成立,返回結(jié)果v1;否則,返回結(jié)果v2。 |
IFNULL(v1,v2) | 如果v1的值不為NULL,則返回v1,否則返回v2 |
CASE | 分支(詳見下面) |
IF(expr,v1,v2)
SELECT IF(1>0,'true','false');
->true
IFNULL(v1,v2)
SELECT IFNULL(NULL,'king');
->king
CASE
? 語法1:
CASE
WHEN expr1 THEN V1
WHEN expr2 THEN V2
...
ELSE vn
END
SELECT CASE
WHEN 1 > 0
THEN '1 > 0'
WHEN 2 > 0
THEN '2 > 0'
ELSE '3 > 0'
END
->1 > 0
?語法2:
CASE expr
WHEN e1 THEN v1
WHEN e1 THEN v1
...
ELSE vn
END
SELECT CASE 1
WHEN 1 THEN '我是1'
WHEN 2 THEN '我是2'
ELSE '你是誰'
三、系統(tǒng)信息函數(shù)
? 系統(tǒng)信息函數(shù)用來查詢MySQL數(shù)據(jù)庫的系統(tǒng)信息。
函數(shù) | 作用 |
---|---|
VERSION() | 返回?cái)?shù)據(jù)庫的版本號 |
CONNECTION_ID() | 返回服務(wù)器的連接數(shù) |
DATABASE()、SCHEMA | 返回當(dāng)前數(shù)據(jù)庫名 |
USER()、SYSTEM_USER()、SESSION_USER()、CURRENT_USER()、CURRENT_USER | 返回當(dāng)前用戶 |
CHARSET(str) | 返回字符串str的字符集 |
COLLATION(str) | 返回字符串str的字符排列方式 |
系統(tǒng)信息函數(shù)練習(xí):
-
VERSION()
: 返回?cái)?shù)據(jù)庫的版本號SELECT VERSION();
-
CONNECTION_ID()
: 返回服務(wù)器的連接數(shù)SELECT CONNECTION_ID();
-
DATABASE()、SCHEMA
: 返回當(dāng)前數(shù)據(jù)庫名SELECT DATABASE();
-
USER()、SYSTEM_USER()、SESSION_USER()、CURRENT_USER()、CURRENT_USER
: 返回當(dāng)前用戶SELECT user();
-
CHARSET(str)
:返回字符串str的字符集SELECT CHARSET('123564');
-
COLLATION(str)
: 返回字符串str的字符排列方式SELECT COLLATION('king');
?效果如下:
四、加密函數(shù)
?加密函數(shù)是MySQL用來對數(shù)據(jù)進(jìn)行加密的函數(shù).
函數(shù) | 作用 |
---|---|
MD5(str) | 對字符串str進(jìn)行散列,可以用于一些普通的不需要解密的數(shù)據(jù)加密,如密碼 |
sha1 | 對字符串str進(jìn)行散列,可以用于一些普通的不需要解密的數(shù)據(jù)加密,如密碼,比MD5更安全 |
SELECT MD5('12345679'),SHA1('12345679');
-->defac44447b57f152d14f30cea7a73cb -->c4b93599b61b85b1f109064294c5bd7adf73ca66
?我們會發(fā)現(xiàn)sha1
產(chǎn)生的密碼更長文章來源:http://www.zghlxwxcb.cn/news/detail-499627.html
五、進(jìn)制轉(zhuǎn)換函數(shù)
函數(shù) | 作用 |
---|---|
BIN(x) | 返回x的二進(jìn)制 |
HEX(x) | 返回x的十六進(jìn)制 |
OCT(x) | 返回x的八進(jìn)制 |
CONV(x,from_base,to_base) | 將from_base進(jìn)制的x,轉(zhuǎn)成to_base進(jìn)制 |
SELECT BIN(10),HEX(10),OCT(10),CONV(16,16,10);
->1010 A 12 22
六、IP地址轉(zhuǎn)換函數(shù)
函數(shù) | 作用 |
---|---|
INET_ATON(IP) | 將點(diǎn)分十進(jìn)制的IP地址轉(zhuǎn)為數(shù)字 |
INET_NTOA(number) | 將數(shù)字形式的IP轉(zhuǎn)為點(diǎn)分十進(jìn)制 |
SELECT INET_ATON('192.168.0.1')
->3232235521
SELECT INET_NTOA(3232235521)
->192.168.0.1
七、總結(jié)
?~MySQL 函數(shù)會對傳遞進(jìn)來的參數(shù)進(jìn)行處理,并返回一個(gè)處理結(jié)果,也就是返回一個(gè)值。MySQL 包含了大量并且豐富的函數(shù),咱們講解幾十個(gè)常用的,剩下的比較罕見的函數(shù)我們可以到「?MySQL 參考手冊」查詢。文章來源地址http://www.zghlxwxcb.cn/news/detail-499627.html
到了這里,關(guān)于【⑤MySQL函數(shù)】:讓你的數(shù)據(jù)庫操作更高效(二)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!