tran
split
- str_to_date(str,format)函数 日期与字符串的转换
- add_months(date,num) 日期操作
- coalesce() 函数取值
- unix_timestamp() 和 from_unixtime() 日期和时间戳的转换
- RegExp 正则
适用于MYSQL
常用format:
- %Y 年
- %m 月
- %d 日
- %H 小时
- %i 分
- %s 秒
大全:
- %a 缩写星期名
- %b 缩写月名
- %c 月,数值
- %D 带有英文前缀的月中的天
- %d 月的天,数值(00-31)
- %e 月的天,数值(0-31)
- %f 微秒
- %H 小时 (00-23)
- %h 小时 (01-12)
- %I 小时 (01-12)
- %i 分钟,数值(00-59)
- %j 年的天 (001-366)
- %k 小时 (0-23)
- %l 小时 (1-12)
- %M 月名
- %m 月,数值(00-12)
- %p AM 或 PM
- %r 时间,12-小时(hh:mm:ss AM 或 PM)
- %S 秒(00-59)
- %s 秒(00-59)
- %T 时间, 24-小时 (hh:mm:ss)
- %U 周 (00-53) 星期日是一周的第一天
- %u 周 (00-53) 星期一是一周的第一天
- %V 周 (01-53) 星期日是一周的第一天,与 %X 使用
- %v 周 (01-53) 星期一是一周的第一天,与 %x 使用
- %W 星期名
- %w 周的天 (0=星期日, 6=星期六)
- %X 年,其中的星期日是周的第一天,4 位,与 %V 使用
- %x 年,其中的星期一是周的第一天,4 位,与 %v 使用
- %Y 年,4 位
- %y 年,2 位
select str_to_date('2021-09-24 16:05:16','%Y-%m-%d %H:%i:%s');
spark sql
to_date(date,fromat)
mysql不支持,spark等大数据框架支持
select to_date('2021-09-24 21:15:37','yyyy-mm-dd hh:mi:ss')
add_months(date,num) 日期操作
适用于spark
不适用于mysql
add_months 有两个参数,第一个参数是日期,第二个参数是对日期进行加减的数字(以月为单位的)
如:查询3个月以前的时间,可以用下列语句
select add_months(2021-09-24,-3);
得到结果是 2021-06-24
coalesce() 函数取值spark sql
mysql
用途:
1.将空值替换成其他值
2.返回第一个非空值
用法:
coalesce(expr1,expr2,…)
依次查看各表达式,遇到非NULL值既停止,并返回该值。
如果所有表达式都是空值,最终返回空值
eg:
select coalesce(null,null,'AAA') ;
得到值 AAA
unix_timestamp() 和 from_unixtime() 日期和时间戳的转换FROM_UNIXTIME(unix_timestamp,format)
将时间戳转换为日期格式
mysql 和 spark 的函数用法不太相同
mysql:
SELECt FROM_UNIXTIME(1632477705,'%Y%m%d %H:%i:%s');
spark:
SELECt FROM_UNIXTIME(1632477705,'yyyyMMdd HH:mm:ss');
UNIX_TIMESTAMP()
将时间格式改为时间戳
mysql 和 spark 用法不同
mysql:
unix_timestamp(date)
SELECt UNIX_TIMESTAMP(NOW());
spark sql:
unix_timestamp(date,format)
select UNIX_TIMESTAMP(NOW(),'yyyyMMdd HHmmss');RegExp 正则
SQL的查询语句中,有时会需要引进正则表达式为其复杂搜索指定模式。
-- 寻找到fruit列含有 'apple'字段的数据 select * from tab1 where fruit regexp 'apple'



