2

我正在使用一个.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"}]}]

但是#inst如上所述包含此错误:

org.postgresql.util.PSQLException:
Can't infer the SQL type to use for an instance of java.util.Date. 
Use setObject() with an explicit Types value  

这里的问题是如何修复该特定错误并在数据库中获取时间戳。

4

1 回答 1

5

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

于 2020-03-01T17:48:35.960 回答