总结一些工作中用到的比较实用的sql函数,持续更新中。。。
1、date_format(参数1,参数2)
-
格式化日期,
-
参数1类型:date(日期)
-
参数2类型:string(字符串),即日期格式
-
示例如下:
// %Y %m %d %H %i %s,分别对应年月日时分秒 date_format(r.receive_date,'%Y-%m-%d %H:%i:%s') as receiveDate
2、concat(str1,str…)
- 将多个字符串连接在一起
- 参数类型:全部都是string(字符串)
- 示例如下:
( SELECT concat( comp.ATTRIBUTE1, "_", comp.COMPANY_NAME ) FROM tsp_bda_vb_companys comp WHERE comp.COMPANY_ID = ord.company_id ) AS company_name,
3、group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator ‘分隔符’])
-
已查询的第一个字段分组,将字段连接在一起,默认以逗号分隔
-
示例如下:
GROUP_CONCAT(od.order_no,"-",od.order_line_no) order_no,
4、<![CDATA[ 特殊字符 ]]>
-
处理特殊字符,解析器不对CDATA区中的内容进行解析,而是将这些数据原封不动地交给下游程序处理
-
示例如下:
<![CDATA[ date_format(r.receive_date ,'%Y-%m-%d') <= #{endDate} ]]>
-
一些特殊字符也可用下面的替代符号所代替:
特殊字符 替代符号 & & amp; < & lt; > & gt; " & quot; ’ & apos;
5、find_in_set(str,strlist)
- 查询字符串(strlist)中包含(str)的结果,返回结果为null或记录
- str 要查询的字段名
- strlist 字符串 参数以”,”分隔 如 (1,2,6,8)
- 示例如下:
where( FIND_IN_SET(id,#{orderIds}) OR FIND_IN_SET(order_no,#{orderIds}) )
6、TIMESTAMPDIFF(type,pretime,latertime)
-
TIMESTAMPDIFF函数,需要三个参数
-
type是比较的类型,可以比较FRAC_SECOND、SECOND、 MINUTE、 HOUR、 DAY、 WEEK、 MONTH、 QUARTER或 YEAR几种类型,
-
pretime是前一个时间
-
latertime是后一个时间,比较时用后一个时间减前一个时间
-
系统当前时间:now()
-
示例如下:
SELECT * from table where TIMESTAMPDIFF(type,now(),latertime)>100