2

我正在使用clojure hugSQL将数据插入PostgreSQL数据库。我正在尝试使用 : tuple* 参数将多行插入到答案表中。传递日期时出现以下错误:

Error: column "date_answer" is of type date but expression is of type character varying?

HugSQL 创建的示例 SQL 查询:

INSERT INTO answer (a, b, c, d, date_answer) VALUES (62,76,NULL,NULL,'2020-05-13')

使用终端插入时,相同的查询可以正常工作,因此字符串的格式似乎很好。有没有办法在 :tuple* 参数中指定单个字段,以便我可以执行类似 :date_answer::date 的操作

这是我的 HugSQL 查询:

插入答案(a,b,c,d,date_answer)值:tuple*:answers

4

1 回答 1

2

您必须解析传递给日期的值。例如,

(ns your-ns
  ...
  (:import
   (java.time LocalDate)
   (java.time.format DateTimeFormatter DateTimeParseException)))

(def ^:private yyyy-MM-dd-formatter
  (DateTimeFormatter/ofPattern "yyyy-MM-dd"))

;; Assuming your HugSQL function is called insert
(insert {:answers [[a b c d (LocalDate/parse date-answer yyyy-MM-dd-formatter)]]

那么您的日期答案是“日期”类型,而不是“字符变化”类型。

于 2020-05-13T11:23:20.057 回答