sql - 运算符不是唯一的。无法选择最佳候选运算符。您可能需要添加显式类型转换

标签 sql database postgresql

我有这个查询,它只选择两个日期之间的差异:

select date_part('day', 'toDate' - 'fromDate') from "Reservation" where "reservationID" = 1;

但这给了我这个错误:

operator is not unique. Could not choose a best candidate operator. You might need to add explicit type casts.

我该如何解决这个问题?

附言这就是我创建“预订”表的方式:

CREATE TABLE "Reservation"
(
  "reservationID" serial NOT NULL,
  "fromDate" timestamp without time zone NOT NULL DEFAULT '-  infinity'::timestamp without time zone,
  "toDate" timestamp without time zone NOT NULL DEFAULT '-infinity'::timestamp without time zone,
  "staffID" integer NOT NULL DEFAULT 0,
  "customerID" integer NOT NULL DEFAULT 0,
  "roomID" integer NOT NULL DEFAULT 0,
  CONSTRAINT "PK_public.Reservation" PRIMARY KEY ("reservationID"),
  CONSTRAINT "FK_public.Reservation_public.Customer_customerID" FOREIGN KEY    ("customerID")
  REFERENCES "Customer" ("customerID") MATCH SIMPLE
  ON UPDATE NO ACTION ON DELETE CASCADE,
  CONSTRAINT "FK_public.Reservation_public.Room_roomID" FOREIGN KEY ("roomID")
  REFERENCES "Room" ("roomID") MATCH SIMPLE
  ON UPDATE NO ACTION ON DELETE CASCADE,
  CONSTRAINT "FK_public.Reservation_public.Staff_staffID" FOREIGN KEY ("staffID")
  REFERENCES "Staff" ("staffID") MATCH SIMPLE
  ON UPDATE NO ACTION ON DELETE CASCADE
)

最佳答案

你不能使用 ' 你需要 " 代替列名

select date_part('day', "toDate" - "fromDate") from "Reservation" where "reservationID" = 1;

关于sql - 运算符不是唯一的。无法选择最佳候选运算符。您可能需要添加显式类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29962253/

相关文章:

mysql - 选择主键

java - 连接器/J getConnection 有语法错误但没有语法

java - 如何将 List<String> 从 spring JPA 存储到数据库中的 text[] 数组

sql - 如何从由 INSERT/UPDATE 规则(触发器)执行的函数返回记录?

c# - 在 spid = -2 的 sql server 2008 R2 上运行的进程

SQL计算从指定日期的第一天到指定日期的差异

c# - 需要创建存储过程但有问题

php - 当有多棵树时,使用修改后的前序树遍历进行选择

MySQL 5.1.41 : Does the MySQL User password expire like in Oracle?

javascript - Postgres - 使用什么列类型来存储嵌套数组