0

我正在使用 PrestoDB 查询一些 MongoDB 集合。MongoDB 有一种getTimestamp() 方法来获取 ObjectId 的时间戳部分。如何在 PrestoDB 上获得类似的时间戳?

4

1 回答 1

1

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类中添加这个

于 2020-03-13T18:46:24.223 回答