【发布时间】:2019-12-25 21:40:16
【问题描述】:
我用一列创建了我的 PostgreSQL 表:
updated_at timestamp(0) with time zone
我正在使用clojure.java-time,但我无法创建一个字符串(或者应该是一个对象?)来设置当前日期时间。我试过了:
(time/format "yyyy-MM-dd HH:ss" (time/local-date-time))
我尝试使用该字符串:
(db/update-answer! {:updated_at "2019-12-25 14:08", :id 102, :answer "Foo"}
但 JDBC 告诉我“updated_at”字段没有有效类型。据我了解,JDBC 仍在使用旧的 java API 来处理日期和时区,而不是 JDK 8 中的新 API。所以,总而言之,我不知道如何创建对 Postgresql 时间有效的字符串或对象- 使用 clojure.java-time 标记列。
有人建议我扩展 JDBC 协议,我正在阅读它,但现在我只是在寻找一种方法来创建有效对象并完成此更新。
更新
在关注this page 之后,我可以为 Instant 提供格式:
(ns zentaur.hiccup.helpers-view
(:require [clojure.tools.logging :as log]
[java-time :as jt])
(:import [java.time ZoneId]))
(defn format-date [date]
(log/info (str ">>> DATE >>>>> " date "und type >>> " (type date)))
(jt/format "yyyy-MM-dd HH:mm" (.atZone date (ZoneId/systemDefault))))
【问题讨论】:
标签: postgresql clojure