Получить временную метку из MongoDB ObjectId через PrestoDB - PullRequest
0 голосов
/ 13 марта 2020

Я использую PrestoDB для запроса некоторых коллекций MongoDB. MongoDB имеет метод getTimestamp() для получения части метки времени ObjectId. Как я могу получить похожую метку времени на PrestoDB?

1 Ответ

1 голос
/ 13 марта 2020

Это не реализовано в Presto, но есть PR: https://github.com/prestosql/presto/pull/3089

Вы можете реализовать это, например, с помощью

@ScalarFunction("get_timestamp")
@SqlType(StandardTypes.TIMESTAMP_WITH_TIME_ZONE) // ObjectId's timestamp is a point in time
public static long getTimestamp(@SqlType("ObjectId") Slice value)
{
    int epochSeconds = new ObjectId(value.getBytes()).getTimestamp();
    return DateTimeEncoding.packDateTimeWithZone(TimeUnit.SECONDS.toMillis(epochSeconds), UTC_KEY);
}

- добавьте это в https://github.com/prestosql/presto/blob/master/presto-mongodb/src/main/java/io/prestosql/plugin/mongodb/ObjectIdFunctions.java класс

...