Java教程

SQL学习笔记(十一)Hive SQL和Presto SQL对比

本文主要是介绍SQL学习笔记(十一)Hive SQL和Presto SQL对比,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

时间转换

注意此处的"timestamp"指'2020-07-20 10:58:59'这种格式,timestamp才是指'1595932031'这种格式,日期格式指2021-08-28

获取当前时间

Hive Presto
sysdate() localtimestamp

"timestamp"转日期

Hive Presto
to_date('2021-08-28 14:00:00')/get_date('2021-08-28 14:00:00') format_datetime(cast('2015-11-11 10:00:00' as timestamp), 'yyyy-MM-dd')
  • unix_timestamp('2021-08-28 10:00:00')的结果是1630116000;
  • cast('2021-08-28 10:00:00' as timestamp)的结果是2021-08-28 10:00:00.0;大家timestamp的格式不一样

以上转换后的结果为:'2021-08-28'

timestamp转"timestamp"

Hive Presto
from_unixtime(1630130400,'yyyy-MM-dd HH:mm:ss') from_unixtime(1630130400,'yyyy-MM-dd HH:mm:ss')
  • Hive的from_unixtime()如果不加'yyyy-MM-dd HH:mm:ss'同样可以返回到秒的结果;如果只需要格式化到小时、分钟等的话只给出到对应位置的格式化参数即可
  • Presto的from_unixtime()不需要使用格式化参数来指定格式化的位数而且其中的类型必须是数值型,如果不是需要先使用cast转为数值型才可,或者会报错,默认返回到毫秒经度。如果需要指定返回的精度配合format_datetime使用即可。也就是Presto必须依靠format_datetime来返回指定精度,这一点Hive不需要
select format_datetime(from_unixtime(1630130400),'yyyy-MM-dd HH:mm:ss')

参考

  • 【1】Hive sql和Presto sql的一些对比:https://www.cnblogs.com/cssdongl/p/8394000.html
  • 【2】Presto和Hive语法对比:https://blog.csdn.net/u013749274/article/details/118569045
  • 【3】各类SQL日期时间处理方法:https://cloud.tencent.com/developer/article/1670723
这篇关于SQL学习笔记(十一)Hive SQL和Presto SQL对比的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!