众所周知,数字整型用来大小比较和计算运算要比字符型快的多,因此部分业务需要把时间字段转化为整型方便业务的快速计算和到达,这个整形数字是选定的日期距UTC 时间 '1970-01-01 00:00:00' 开始的秒数,目前为十位,比如常用来举例的1234567890,但毕竟数字不方便观察,后续还需要把这些时间数字转换为真正的时间字段
这里就需要两个函数来进行转换UNIX_TIMESTAMP和FROM_UNIXTIME
咱们一一介绍
UNIX_TIMESTAMP
是把时间字段转化为整型,需要注意的是有些数据库需要指明时间字段类型
比如MySQL里是可以直接UNIX_TIMESTAMP('20200223'),而某些大数据平台需要UNIX_TIMESTAMP('20200223','yyyyMMdd')

FROM_UNIXTIME
顾名思义就是从整型里把时间整型进行破解成想要的时间格式,使用时可指定格式

这里面经常用到的是UNIX_TIMESTAMP和FROM_UNIXTIME的结合,比如对一个时间字段进行归集计算:把'2020-02-23 01:00:02','2020-02-23 01:02:31','2020-02-23 01:03:22'都归集成'2020-02-23 01:00:00'
- select FROM_UNIXTIME(unix_timestamp('20200223')+5*60*floor((substr('2020-02-23
- 00:01:02',12,2)*60+substr('2020-02-23 00:01:02',15,2))/5)) time1

补充下格式转换:
- %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 位
到此这篇关于大数据Spark Sql中日期转换FROM_UNIXTIME和UNIX_TIMESTAMP的使用的文章就介绍到这了,更多相关Spark Sql 日期转换内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!