为了避免处理java的日期和时间对象,我使用了clj-time。当我将它与 korma 的 sqlite3 助手一起使用时,它可以正常工作,但是当我做类似的事情时
(insert posts (values {:name "name" :due_date (date-time 2014)}))
我被告知系统无法推断对象类型。
我一直在环顾四周并询问,似乎clojure.java.jdbc支持一个名为ISQLValue的协议,正是为了处理这样的事情。它用于扩展对象,以便它们可以向数据库表示自身。但是,最新版本的 korma 使用 CJJ 的 0.2 版本。
除了每次需要将日期时间对象呈现给 psql 数据库时,是否有其他选择?
我正在使用以下函数
clj-time.coerce/to-sql-time
它对我来说工作正常。我测试了插入查询的试运行
(use :reload-all 'clj-time.core)
(use :reload-all 'clj-time.coerce)
然后
(defn sql-now[]
"Returns now in sql time formate"
(to-sql-time (now)))
然后
(use :reload-all 'korma.core)
然后
(dry-run (insert :users (values {:email "afdbsk@jasdfgkj.cdosjf" :created_at (sql-now)})))
输出是
dry run :: INSERT INTO "users" ("created_at", "email") VALUES (?, ?) :: [#inst "2014-09-15T06:32:24.498000000-00:00" afdbsk@jasdfgkj.cdosjf]
=> [{nil 1}]
它对我来说工作正常,请检查这些是否完全满足您的要求。如果您有任何疑问,请回复?
它对我来说工作正常