如何使用 korma 在 postgresql 上插入 clj-time 日期时间对象

Posted

技术标签:

【中文标题】如何使用 korma 在 postgresql 上插入 clj-time 日期时间对象【英文标题】:How to insert clj-time date-time objects on postgresql with korma 【发布时间】:2013-12-18 22:40:04 【问题描述】:

为了避免处理 java 的日期和时间对象,我使用了 clj-time。当我将它与 korma 的 sqlite3 助手一起使用时,它可以正常工作,但是当我执行类似的操作时

(insert posts (values :name "name" :due_date (date-time 2014)))

我被告知系统无法推断对象类型。

我一直在四处寻找并询问,似乎clojure.java.jdbc 支持一个名为ISQLValue 的协议来精确处理这样的事情。它用于扩展对象,以便它们可以在数据库中表示自己。然而,最新版本的 korma 使用的是 0.2 版本的 CJJ。

每次需要将日期时间对象呈现给 psql 数据库时,是否有任何替代方法可以使用 clj-time.coerce/to-sql-date?

【问题讨论】:

每次调用 coerce 到底有什么不好的地方?这是该函数存在的唯一原因。 【参考方案1】:

我正在使用以下功能

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]

它对我来说很好,如果它完全满足您的要求,请检查这些。 如果您有任何疑问,请回复?

对我来说很好用

【讨论】:

以上是关于如何使用 korma 在 postgresql 上插入 clj-time 日期时间对象的主要内容,如果未能解决你的问题,请参考以下文章

连接数据库 in clojure ---korma

使用 clojure 的 korma sqlite3 助手时,sqlite3 数据库的默认路径是啥?

如何使用 xpath 表达式在 PostgreSQL 中的 XML 列上创建索引?

如何在 PostgreSql 上使用 Jooq 级联截断?

编程实践如何在 Ubuntu 上安装 PostgreSQL [快速入门]

如何在 .net 核心上使用 ef 核心在 postgresql(db first)中映射枚举