从时间戳格式检索月份" 25 / Nov / 2016:15:48:01 + 0000'

时间:2016-12-08 08:46:49

标签: sql hadoop hive hiveql

我目前正在使用Hive SQL,我有' timestamp'格式为"25/Nov/2016:15:48:01 +0000"的表格中的列。

如何提取11月份的月份?从上面的格式不使用SUBSTRING()函数。

我试过了,

SELECT MONTH(timestamp) FROM table_name;

但它返回null。什么应该是正确的方法来检索11月的' 11月'来自上述时间戳格式。

1 个答案:

答案 0 :(得分:2)

请参阅以下example ..

  • unix_timestamp(time,'dd/MMM/yyyy:HH:mm:ss')然后尝试你的月份功能

    OR

  • 首先将您的时间戳转换为字符串以应用下面的月份函数 例子

  

string from_unixtime(bigint unixtime[, string format])转换   从unix epoch(1970-01-01 00:00:00 UTC)到a的秒数   表示当前系统中该时刻的时间戳的字符串   时区的格式为" 1970-01-01 00:00:00"

然后你可以应用月份函数,它将返回月份int格式,后面可以转换为等效的字符串

  

int month(string date)返回日期或月份的月份部分   时间戳字符串:月份(" 1970-11-01 00:00:00")= 11,   月(" 1970-11-01")= 11。