在 .edn 文件中使用 #inst 为 clojure 中的 jdbc 数据库设置时间戳

mwa*_*wal 2 clojure edn

我正在使用一个.edn文件作为数据库种子,需要一种方法来在该文件中设置时间戳并将其写入数据库而不会出现 java 错误。(事实证明,您不能只输入时间戳作为字符串并让它自动转换,因为我们中的一些人可能习惯于使用比 Java 更动态的语言)。

.edn如果我删除#inst并且只将 nil 代替,我已经得到了以下文件,这些文件可以正确播种。

[{:table :subscriptions
  :data [{:user_id 1
          :price 9900
          :transacted_at nil
          :begin_at nil
          :end_at #inst "2020-01-01T22:00:01-07:00"}]}]
Run Code Online (Sandbox Code Playgroud)

但是#inst包含在上面给出了这个错误:

[{:table :subscriptions
  :data [{:user_id 1
          :price 9900
          :transacted_at nil
          :begin_at nil
          :end_at #inst "2020-01-01T22:00:01-07:00"}]}]
Run Code Online (Sandbox Code Playgroud)

这里的问题是如何修复该特定错误并将时间戳记输入数据库。

Sea*_*eld 5

EDN 文件没问题。当您尝试插入数据时,您的问题来自 JDBC 驱动程序。您没有说明您使用的是哪个 Clojure JDBC 库,但如果您使用的是next.jdbc,则应该要求next.jdbc.date-time命名空间,这将自动启用从java.util.Date有效 PostgreSQL 数据类型的转换。