mysql中一些常用函數

1、FIND_IN_SET(str,strlist);  #如果字符串str是在的strlist組成的N子串的字符串列表,返回值的範圍爲1到N。

2、SELECT CONCAT(CURDATE()," 00:00:00");  #將兩個拼接在一起

3、SELECT substring_index("2019/3/8 星期五"," ",1);  #返回2019/3/8;截取第一個空格前面的內容

1.1

select FIND_IN_SET('2', '1,2'); 返回2

select FIND_IN_SET('6', '1');  返回0
示例:
select * from user where FIND_IN_SET(id,'1,2,3,4');
使用find_in_set函數一次返回多條記錄
id 是一個表的字段,然後每條記錄分別是id等於1,2,3,4,5的時候
有點類似in (集合)

select * from user where id in (1,2,3,4,5);

程序中可以適用這樣的場景,比如:ID的字段是字符串類型的(ID=zk20170601),這時就可以使用這個了,FIND_IN_SET( ID  ,'zk20170601,zk20170602,zk20170603,zk20170604');這樣就方便的解決了,當然還有其他方式可以解決,如mybatis中的<iterate>標籤或<foreach>標籤。

注意:FIND_IN_SET和IN還是有細微的差別的,比如: id in (list)中的list必須是常量,FIND_IN_SET(id,list)中的list可以是變量。

SELECT DATEDIFF("2012-03-01 13:50:59","2012-02-01")  #得到天數之差29,只與年月日有關,與時分秒無關
SELECT DATE_SUB(NOW(), INTERVAL 1 DAY)  #把時間往前推30分鐘,單位可以自定義DAY天、HOUR時、MINUTE分、SECOND秒

# MySQL 爲日期增加一個時間間隔:date_add()
now()       //now函數爲獲取當前時間
select date_add(now(), interval 1 day); - 加1天
select date_add(now(), interval 1 hour); -加1小時
select date_add(now(), interval 1 minute); - 加1分鐘
select date_add(now(), interval 1 second); -加1秒
select date_add(now(), interval 1 microsecond);-加1毫秒
select date_add(now(), interval 1 week);-加1周
select date_add(now(), interval 1 month);-加1月
select date_add(now(), interval 1 quarter);-加1季
select date_add(now(), interval 1 year);-加1年
MySQL adddate(), addtime()函數,可以用date_add() 來替代。
2. MySQL 爲日期減去一個時間間隔:date_sub()
MySQL date_sub() 日期時間函數 和date_add() 用法一致。
MySQL 中subdate(),subtime()函數,建議,用date_sub()來替代。

SELECT PERIOD_DIFF(DATE_FORMAT('2018-12-20','%Y%m'),DATE_FORMAT(NOW(),'%Y%m')); #3 now()=2018-09-14 17:22:56
SELECT DATEDIFF('2018-10-20',CURDATE()) AS d, #36
(YEAR('2019-10-20')-YEAR(CURDATE()))*12 AS Y, #12
MONTH('2019-10-20')-MONTH(CURDATE()) AS m, #1
(YEAR('2019-10-20')-YEAR(CURDATE()))*12 + MONTH('2019-10-20')-MONTH(CURDATE()) AS result; #13

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章