Hue HIVE DB中如何为string类型时间字段增加一分钟
Hive中为String类型时间字段增加一分钟的SQL实现
由于你的date_need字段是String类型,无法直接进行时间运算,需要先转换为Hive支持的时间类型,完成加一分钟操作后再转回String格式。以下是两种可行的实现方式:
方法一:基于Unix时间戳运算
SELECT from_unixtime(unix_timestamp(date_need, 'yyyy-MM-dd HH:mm:ss') + 60, 'yyyy-MM-dd HH:mm:ss') AS date_need_plus_1min FROM myschema.table ORDER BY date_need;
unix_timestamp(date_need, 'yyyy-MM-dd HH:mm:ss'):将String类型的时间转换为Unix时间戳(单位:秒)+60:给时间戳加60秒,等价于增加一分钟from_unixtime(..., 'yyyy-MM-dd HH:mm:ss'):将运算后的时间戳转回指定格式的String类型
方法二:基于Timestamp类型运算
SELECT date_format(date_add(to_timestamp(date_need, 'yyyy-MM-dd HH:mm:ss'), INTERVAL 1 MINUTE), 'yyyy-MM-dd HH:mm:ss') AS date_need_plus_1min FROM myschema.table ORDER BY date_need;
to_timestamp(date_need, 'yyyy-MM-dd HH:mm:ss'):将String类型时间转换为Timestamp类型date_add(..., INTERVAL 1 MINUTE):对Timestamp类型执行加一分钟操作date_format(..., 'yyyy-MM-dd HH:mm:ss'):将运算后的Timestamp转回指定格式的String类型
注意事项
- 格式匹配:必须保证
unix_timestamp或to_timestamp的第二个参数与原时间字符串格式完全一致(比如你的示例格式是yyyy-MM-dd HH:mm:ss),否则转换会返回NULL。 - 别名生效问题:如果直接在
ORDER BY中使用别名报错,可通过子查询实现:
SELECT date_need_plus_1min FROM ( SELECT from_unixtime(unix_timestamp(date_need, 'yyyy-MM-dd HH:mm:ss') + 60, 'yyyy-MM-dd HH:mm:ss') AS date_need_plus_1min FROM myschema.table ) t ORDER BY date_need_plus_1min;
内容的提问来源于stack exchange,提问作者Yes_par_row
相关产品推荐
相关产品推荐

