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