Вам нужно будет передать java.sql.Timestamp
экземпляр. Чтобы разобрать вашу строку в одну, используя clj-time
, библиотеку Joda-Time для Clojure, вы должны сделать что-то вроде следующего:
(require '(clj-time [format :as timef] [coerce :as timec])
(->> "Thu Feb 09 10:38:01 +0000 2012"
(timef/parse (timef/formatter "EEE MMM dd HH:mm:ss Z yyyy"))
timec/to-timestamp)
Возвращенное значение затем может быть передано в PostgreSQL через JDBC.
В случае, если вы получаете дату в каком-либо другом строковом формате и конвертируете ее в этот формат, вы можете пропустить конвертацию и предоставить соответствующий форматер для исходного представления. По умолчанию на карте clj-time.format/formatters
доступно довольно много, скажем, (clj-time.format/show-formatters)
в REPL, чтобы увидеть список с примерами. Кроме того, clj-time.coerce/from-string
пытается все форматеры по умолчанию в последовательности, возвращая значение первого последующего анализа (nil
, если его нет). Если вы получаете дату как java.util.Date
или long
, см. from-date
и from-long
в том же пространстве имен.
Используйте [clj-time "0.3.6"]
в качестве спецификатора зависимости в project.clj
, если вы решите использовать clj-time
.
В качестве альтернативы, вы можете использовать какой-то другой способ разбора вашей строки метки времени в java.sql.Timestamp
; Timestamp
сам может проанализировать другое строковое представление:
(java.sql.Timestamp/valueOf "2004-10-19 10:23:54")
clj-time
- самый разумный способ иметь дело с датой и временем в Clojure, поэтому, вероятно, он того стоит.