presto hive sql 常用必会语法汇总

34 篇文章 5 订阅
29 篇文章 3 订阅

没有经过系统梳理 不足为看

时间转时间戳: cast(to_unixtime(timestamp ‘2016-09-01 01:00:00’) as bigint)
int 转 varchar :cast(1 as varchar)
varchar 转int:cast(‘1’ as bigint)
map数据查询:element_at(url_parsed,‘do’)
数据包含 contains(x, element)
时间戳转格式化时间:
select format_datetime(from_unixtime(cast(view_time as bigint)),‘yyyyMMddHHmmss’)
select format_datetime(from_unixtime(1433181293),‘yyyyMMddHHmmss’)

原文链接:https://blog.csdn.net/Eos0422/article/details/89203027

1、找出时间大于2018-12-17的所有内容

select * from table where “time” > date(‘2018-12-17’)

与关系型数据库不同的是完全不同类型的不可以比较,类似的才可以比较,关系型数据库的

2、针对完全不同类型的进行比较,也可以使用cast函数,用法:cast(value as type)

比如 select * from table where “time” > cast(‘2018-12-17’ as date) limit 100,

3、表示日期的函数:

(1)now() 精确到今天的时分秒

(2) current_date 精确到今天的年月日

(3) current_date - interval ‘1’ day, 精确到昨天的年月日

(4)日期类型不能与字符串比较,运行错误,需要显式转换

(5)字符串格式化成日期格式

       date_parse('2018-12-17 12:12:12', '%Y-%m-%d %H:%i:%s'), 

       cast('2018-09-09' as date),

       cast('2018-09-09 12:12:12' as timestamp),

(6) 日期转指定格式化字符串

       date_format(now(), '%Y-%m-%d %H:%i:%s')

(7)转换为时间戳

   to_unixtime(cast ('2018-12-18 09:18:09.000' as timestamp))   

关于时间的文档:https://prestodb.io/docs/current/functions/datetime.html

COUNT(DISTINCT a) OVER (PARTITION BY c)
count(1) 不管有没有值,只要有这条记录,值就加1
row_number:赋予唯一的连续位次。
to_data:取出字符串中的日期部分

SELECT rank() OVER (ORDER BY sum(b))
FROM T
GROUP BY a;

7、说明:添加主键: Alter table tabname add primary key(col)
说明:删除主键: Alter table tabname drop primary key(col)
8、说明:创建索引:create [unique] index idxname on tabname(col….)
删除索引:drop index idxname
注:索引是不可更改的,想更改必须删除重新建。
9、说明:创建视图:create view viewname as select statement
删除视图:drop view viewname

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值