如何转换日期

0yg35tkg  于 2021-06-26  发布在  Hive
关注(0)|答案(2)|浏览(405)

我在表中的日期为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;

j8ag8udp

j8ag8udp1#

使用 unix_timestamp(string date, string pattern) 将给定的日期格式转换为从1970-01-01经过的秒数。然后使用 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

vql8enpb

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;**

相关问题