我有一个包含格式为MM / dd / yyyy的日期字段的数据集,我的目标是创建一个具有相同日期格式但具有时间戳格式的表(最后,应该有一个执行日期的选项函数,如果它是int或字符串日期函数将无法工作。)
我尝试过的事情: 我的专栏名称:as_of_date
1)施放(unix_timestamp(as_of_date
,“MM / dd / yyyy”)作为时间戳)
i / p - > 01/03/2006,o / p - > 2006-01-03 00:00:00
问题 - 我不希望输出中有额外的零。 substr不在日期函数
2)如果我将值保持为字符串,则日期函数不起作用。 天(01/03 / 2006' ) 输入:'01 / 03/2006',输出:null(但预期为3)
你能帮我一个已经存在的日期格式还是帮我为我的逻辑创建一个新的日期格式。
答案 0 :(得分:0)
尝试一次
使用 unix_timestamp 功能来匹配输入日期格式,然后使用 from_unixtime 功能更改输出格式然后转为日期类型。
hive> select date(from_unixtime(unix_timestamp("03/06/2018", "MM/dd/yyyy"),"yyyy-MM-dd"));
+-------------+--+
| _c0 |
+-------------+--+
| 2018-03-06 |
+-------------+--+
在Impala中:
hive> select from_unixtime(unix_timestamp("03/06/2018", "MM/dd/yyyy"),"yyyy-MM-dd");
+-------------+--+
| _c0 |
+-------------+--+
| 2018-03-06 |
+-------------+--+