Hive/Presto中如何将yyyy-MM-dd HH:mm:ss.SSS转为yyyy-MM-dd日期
Hive/Presto 带毫秒的Datetime转日期格式解决方案
Hive环境处理方式
如果created_dt是字符串类型:
- 直接用
to_date函数即可,无需额外转换:
to_date(created_dt) AS date_column
或者通过时间戳转换(毫秒部分可忽略,unix_timestamp能识别到秒级):
from_unixtime(unix_timestamp(created_dt, 'yyyy-MM-dd HH:mm:ss.SSS'), 'yyyy-MM-dd') AS date_column
如果created_dt是datetime类型,直接强制转换:
cast(created_dt AS date) AS date_column
Presto环境处理方式
如果created_dt是字符串类型:
- 先解析为timestamp再转date:
date(date_parse(created_dt, '%Y-%m-%d %H:%i:%s.%f')) AS date_column
或者直接调用to_date,Presto原生支持解析带毫秒的日期字符串:
to_date(created_dt) AS date_column
如果created_dt是timestamp类型,直接转换:
cast(created_dt AS date) AS date_column
你之前尝试的问题点
format_datetime(created_dt,'YYYY-mm-dd'):格式符错误,mm代表分钟,月份需用MM,正确写法为format_datetime(created_dt,'yyyy-MM-dd')(Presto对应函数为date_format)to_date(str created_dt):语法错误,无需str关键字,直接写to_date(created_dt)date(created_dt):Hive中date()仅支持timestamp类型入参,若列是字符串会报错;Presto可直接用,但需确保字符串格式标准
内容的提问来源于stack exchange,提问作者PRITHVI ANAND
相关产品推荐
相关产品推荐

