INSTR
mysql的内置函数instr(filed,str),作用是返回str子字符串在filed字符串的第一次出现的位置。当instr(filed,str)=0时,表示子符串str不存在于字符串filed中,因此可以用来实现mysql中的模糊查询,与like用法类似。如下:
instr(filed,str) > 0 ⇒ file like '%str%'
instr(filed,str) = 1 ⇒ file like 'str%'
instr(filed,str) = 0 ⇒ file not like '%str%'
TIMESTAMPDIFF
TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)
unit:日期比较返回的时间差单位,SECOND:秒 MINUTE:分钟 HOUR:小时 DAY:天 WEEK:星期 MONTH:月 QUARTER:季度 YEAR:年
datetime_expr1: 要比较的日期1
datetime_expr2: 要比较的日期2
TIMESTAMPDIFF函数返回datetime_expr2 - datetime_expr1的结果,其中datetime_expr1和datetime_expr2可以是DATE或DATETIME类型值
-- 相差:25秒
SELECT TIMESTAMPDIFF(SECOND,'2022-04-23 14:57:00','2022-04-23 14:57:25');
-- 相差:5分钟
SELECT TIMESTAMPDIFF(MINUTE,'2022-04-23 15:00:00','2022-04-23 15:05:00');
-- 相差:5小时
SELECT TIMESTAMPDIFF(HOUR,'2022-04-23 11:20:00', '2022-04-23 16:20:00');
-- 相差:2天
SELECT TIMESTAMPDIFF(DAY,'2022-04-23 11:20:00', '2022-04-25 11:20:00');
-- 相差:1星期
SELECT TIMESTAMPDIFF(WEEK,'2022-04-23 11:20:00', '2022-04-30 11:20:00');
-- 相差:1月
SELECT TIMESTAMPDIFF(MONTH,'2022-04-23 11:20:00', '2022-05-30 11:20:00');
-- 相差:1季度
SELECT TIMESTAMPDIFF(QUARTER,'2022-04-23 11:20:00', '2022-07-23 11:20:00');
-- 相差:1年
SELECT TIMESTAMPDIFF(YEAR,'2022-04-23 11:20:00', '2023-04-23 11:20:00');
TIMESTAMPDIFF函数允许其搭配使用的参数datetime_expr1和datetime_expr2具有混合类型
datetime_expr1是DATE类型值,datetime_expr2是DATETIME类型值,TIMESTAMPDIFF函数会将datetime_expr1自动转换成DATETIME类型值(即在日期后面加上时间“00:00:00”)
--
SELECT TIMESTAMPDIFF(HOUR,'2022-04-27','2022-04-27 12:00:00');
--
SELECT TIMESTAMPDIFF(HOUR,'2022-04-27 00:00:00','2022-04-27 12:00:00');
TIMESTAMPDIFF函数可以结合日期函数进行搭配使用
-- 可以结合日期函数进行搭配使用
SELECT TIMESTAMPDIFF(SECOND,'2022-04-23', CURRENT_DATE());
SELECT TIMESTAMPDIFF(SECOND,'2022-04-23 15:15:00',NOW());
SELECT TIMESTAMPDIFF(SECOND,'2022-04-23 15:15:00',CURRENT_TIMESTAMP());
-- 上述日期函数补充说明
-- CURRENT_DATE()用于返回当前时间
-- 示例结果:2022-04-27
SELECT CURRENT_DATE();
-- NOW()用于返回当前日期和时间
-- 示例结果:2022-04-27 11:27:28
SELECT NOW();
-- CURRENT_TIMESTAMP()用于返回当前日期和时间
-- 示例结果:2022-04-27 11:30:25
SELECT CURRENT_TIMESTAMP();
ceiling & floor
ceiling 向上取整 返回大于等于函数参数并与之最接近的整数
floor 向下取整 返回小于等于函数参数并与之最接近的整数
conca_ws(HIVE)
select concat_ws('.', 'www', array('itcast', 'cn'));
split(HIVE)
select split('apache hive',' ')[0]
date_add与date_sub函数
mysql中DATE_ADD(date,INTERVAL expr type)类似于:DATE_SUB(date,INTERVAL expr type)
这些函数执行日期运算。date是一个DATETIME或DATE值,用来指定起始时间。expr 是一个表达式,用来指定从起始日期添加或减去的时间间隔值。Expr是一个字符串;对于负值的时间间隔,它可以以一个‘-’开头。type为关键词,它指示了表达式被解释的方式。关键词INTERVA及 type 分类符均不区分大小写。
从它的特性得知date是指定的日期,INTERVAL为关键词,expr是具体的时间间隔,type是时间单位。注意:type可以复合型的,比如YEAR_MONTH。如果type不是复合型的,DATE_ADD和DATE_SUB其实可以通用,因为expr可以为一个负数。对应复合型的type,需要使用引号对两个参数进行引用起来,中间用任何非数字字符作为间隔即可,并且不能使用负数。但是时间间隔只指定了一个值,那么也能正常工作,但是对应XXX_YYY使用的单位为YYY,也就相当于单一单位的type,同时可以使用负数。
mysql> select date_add('2013-01-18', interval '1,2' YEAR_MONTH);
+---------------------------------------------------+
| date_add('2013-01-18', interval '1,2' YEAR_MONTH) |
+---------------------------------------------------+
| 2014-03-18 |
+---------------------------------------------------+
mysql> select date_add('2013-01-18', interval 1 YEAR_MONTH);
+-----------------------------------------------+
| date_add('2013-01-18', interval 1 YEAR_MONTH) |
+-----------------------------------------------+
| 2013-02-18 |
+-----------------------------------------------+
mysql> select date_add('2013-01-18', interval -1 YEAR_MONTH);
+------------------------------------------------+
| date_add('2013-01-18', interval -1 YEAR_MONTH) |
+------------------------------------------------+
| 2012-12-18 |
+------------------------------------------------+
浙公网安备 33010602011771号