在平時(shí)寫項(xiàng)目的時(shí)候不免要寫sql乐尊,在每次用到函數(shù)的時(shí)候就去百度,然后就粘貼復(fù)制划址,對自己根本沒有記住扔嵌,現(xiàn)在就將常用的MySQL函數(shù)整理一下,供自己以后查看夺颤。
一痢缎、時(shí)間相關(guān)函數(shù)
1.日期格式化
DATE_FORMAT(time,'%Y-%m-%d %H:%i:%s')
DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s') data1,
DATE_FORMAT(NOW(),'%Y-%m-%d') data2,
DATE_FORMAT(NOW(),'%H:%i:%s') data3
2.兩個(gè)日期相減
//減數(shù)在前,被減數(shù)在后
time_to_sec(timediff(t2, t1)) diff1, 結(jié)果為秒
//被減數(shù)在前世澜,減數(shù)在后
timestampdiff(second, t1, t2) diff2, 結(jié)果為秒
unix_timestamp(t2) -unix_timestamp(t1) diff3 結(jié)果為秒
select now(),date_add(now(),INTERVAL 1 MINUTE) date,
-- 減數(shù)在前独旷,被減數(shù)在后
time_to_sec(timediff(date_add(now(),INTERVAL 1 MINUTE),now() )) diff1,
-- 這里是相反的,被減數(shù)在前寥裂,減數(shù)在后
timestampdiff(second,now(),date_add(now(),INTERVAL 1 MINUTE)) diff2,
unix_timestamp(date_add(now(),INTERVAL 1 MINUTE)) -unix_timestamp(now()) diff3
3.給指定日期增加指定的時(shí)間間隔
DATE_ADD(d嵌洼,INTERVAL expr type)
select now(),
date_add(now(),INTERVAL 1 DAY) DAY, -- 增加天數(shù)
date_add(now(),INTERVAL 1 MINUTE) MINUTE, -- 增加分鐘
date_add(now(),INTERVAL 1 SECOND) SECOND, -- 增加秒
date_add(now(),INTERVAL 1 HOUR) HOUR, -- 增加小時(shí)數(shù)
date_add(now(),INTERVAL 1 MONTH) MONTH, -- 增加月份
date_add(now(),INTERVAL 1 YEAR) YEAR, -- 增加年份
date_add(now(),INTERVAL 1 WEEK) WEEK -- 增加星期
4.給指定日期減去指定的時(shí)間間隔
DATE_SUB(date,INTERVAL expr type)
select now(),
date_sub(now(),INTERVAL 1 DAY) DAY, -- 減去天數(shù)
date_sub(now(),INTERVAL 1 MINUTE) MINUTE, -- 減去分鐘數(shù)
date_sub(now(),INTERVAL 1 SECOND) SECOND, -- 減去秒數(shù)
date_sub(now(),INTERVAL 1 HOUR) HOUR, -- 減去小時(shí)
date_sub(now(),INTERVAL 1 MONTH) MONTH, -- 減去月份
date_sub(now(),INTERVAL 1 YEAR) YEAR, -- 減去年份
date_sub(now(),INTERVAL 1 WEEK) WEEK -- 減去星期
二、其他常用的函數(shù)
1.判斷表達(dá)式是否為null
[IFNULL(v1,v2)] 如果 v1 的值不為 NULL封恰,則返回 v1麻养,否則返回 v2
SELECT IFNULL(null,'Hello Word') ->Hello Word
2.MySQL中if判斷
IF(expr,v1,v2) 如果表達(dá)式 expr 成立,返回結(jié)果 v1诺舔;否則必指,返回結(jié)果 v2
SELECT IF(1 > 0,'正確','錯(cuò)誤') ->正確
3.MySQL中的switch,case的使用
CASE expression
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
WHEN conditionN THEN resultN
ELSE result
END
CASE 表示函數(shù)開始升薯,END 表示函數(shù)結(jié)束憎乙。如果 condition1 成立胚吁,則返回 result1,
如果 condition2 成立底燎,則返回 result2厅须,當(dāng)全部不成立則返回 result枉氮,
而當(dāng)有一個(gè)成立之后碰纬,后面的就不執(zhí)行了允粤。
SELECT CASE WHEN 1=1 THEN 1 ELSE 0 END ->1
SELECT CASE WHEN 1=0 THEN 1 ELSE 0 END ->0
4.GROUP_CONCAT的使用方法
列轉(zhuǎn)行函數(shù)
group_concat(字段) 顯示默認(rèn)分隔符“崭倘,”
group_concat(字段 separator ';') 自定義分隔符“;”
SELECT GROUP_CONCAT(user_name SEPARATOR ';') FROM app_user
SELECT GROUP_CONCAT(user_name ) FROM app_user