У меня есть данные JSON, как показано ниже: мне нужно преобразовать эту дату или mongo_date в метку времени utc, чтобы анализировать данные в улье в соответствии с примером временной шкалы в год, в месяц, в неделю, используя уменьшение карты
{
"_id" : ObjectId("51ac77050e9edcdad271ce2d"),
"company" : null,
"date" : "19760224",
"mongo_date" : ISODate("1976-02-24T00:00:00Z")
Ответ 1 · рейтинг 10 · leftjoin
Hive понимает этот формат: 'yyyy-MM-dd HH:mm:ss.SSS'.
Используйте unix_timestamp() для преобразования в секунды, переданные с 1970-01-01, затем используйте from_unixtime() для преобразования в правильный формат:
select from_unixtime(UNIX_TIMESTAMP("2017-01-01T05:01:10Z", "yyyy-MM-dd'T'HH:mm:ss'Z'"),"yyyy-MM-dd HH:mm:ss");
Результат:
2017-01-01 05:01:10
Обновление. Этот метод заключается в удалении Z и замене T пробелом с использованием regexp_replace и преобразовании в метку времени, если необходимо, без использования unix_timestamp(), это позволит сохранить миллисекунды:
select timestamp(regexp_replace("2019-05-17T17:03:09.775Z", '^(.+?)T(.+?)Z$','$1 $2'));
Результат:
2019-05-17 17:03:09.775