如何获取datomic db中最后一个事务的日期时间?

时间:2014-10-25 21:32:44

标签: clojure datomic

我想查找最近对连接进行的事务。以下似乎没有给出正确的日期:

(require '[datomic.api :as datomic])

(-> conn datomic/db datomic/basis-t datomic/t->tx (java.util.Date.))

3 个答案:

答案 0 :(得分:4)

我明白了:

(defn last-transaction-time [db]
  (let [t (-> db datomic/basis-t)]
    [t (ffirst (datomic/q '[:find ?t
                            :in $ ?tx
                            :where [?tx :db/txInstant ?t]]
                          db
                          (datomic/t->tx t)))]))

答案 1 :(得分:0)

您可能希望let线程函数的结果最多为datomic/t->tx。然后使用它来查询事务实体(为每个事务隐式创建的实体)。每个事务实体都有一个:db/txInstant属性,在事务期间隐式添加该属性。该属性的值是您希望传递给java.util.Date.静态方法的值。

答案 2 :(得分:0)

应该容易得多

 (d/q
     '[:find (max 1 ?tx)
       :where
       [?tx :db/txInstant]]
     db)