我在表中的日期为2017年9月1日下午2:00作为实际发货日期,我想在配置单元中将其转换为2017年9月1日,我尝试使用下面的命令,但显示为null select actualshipdate,从\u unixtime(unix\u timestamp(substr(actualshipdate,0,11),'dd mm yyyy')作为tablename的newdate;
j8ag8udp1#
使用 unix_timestamp(string date, string pattern) 将给定的日期格式转换为从1970-01-01经过的秒数。然后使用 from_unixtime() 要转换为给定格式:
unix_timestamp(string date, string pattern)
from_unixtime()
hive> select from_unixtime(unix_timestamp('Sep 1 2017 2:00 PM' ,'MMM dd yyyy HH:mm a'), 'dd-MM-yyyy'); OK 01-09-2017 Time taken: 0.049 seconds, Fetched: 1 row(s)
请参见以下示例:https://docs.oracle.com/javase/7/docs/api/java/text/simpledateformat.html
vql8enpb2#
您使用的函数正确,但参数错误。参数应该是unix\u timestamp(datestring,date\u格式);此函数将日期转换为unix日期格式,您可以使用from\u unixtime(unixdateformat,format\u youneeded)进一步格式化该格式;
hive> select unix_timestamp('Sep 1 2017 2:00 PM' ,'MMM dd yyyy HH:mm a'); OK 1504256400
你需要特定的日期模式才能使用这个函数
from_unixtime(unixdateformat,format_youneed); hive> select from_unixtime(1504256400,'dd-MM-yyyy'); OK 01-09-2017 hive> select from_unixtime(UNIX_TIMESTAMP('Sep 1 2017 2:00 PM','MMM dd yyyy HH:mm a'), 'dd-MM-yyyy'); OK 01-09-2017 Time taken: 0.135 seconds, Fetched: 1 row(s)
由于表中的日期存储在actualdate中,因此可以使用下面的命令来获得结果。
**hive> select from_unixtime(UNIX_TIMESTAMP(actualshipdate,'MMM dd yyyy HH:mm a'), 'dd-MM-yyyy') from tablename;**
2条答案
按热度按时间j8ag8udp1#
使用
unix_timestamp(string date, string pattern)
将给定的日期格式转换为从1970-01-01经过的秒数。然后使用from_unixtime()
要转换为给定格式:请参见以下示例:https://docs.oracle.com/javase/7/docs/api/java/text/simpledateformat.html
vql8enpb2#
您使用的函数正确,但参数错误。参数应该是unix\u timestamp(datestring,date\u格式);此函数将日期转换为unix日期格式,您可以使用from\u unixtime(unixdateformat,format\u youneeded)进一步格式化该格式;
你需要特定的日期模式才能使用这个函数
由于表中的日期存储在actualdate中,因此可以使用下面的命令来获得结果。