【问题标题】:operator is not unique. Could not choose a best candidate operator. You might need to add explicit type casts运算符不是唯一的。无法选择最佳候选运营商。您可能需要添加显式类型转换
【发布时间】:2015-04-30 08:03:05
【问题描述】:

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

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

但这给了我这个错误:

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

我该如何解决这个问题?

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

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
)

【问题讨论】:

  • 你应该避免使用带引号的标识符——它们比它们值得的麻烦多得多(而且我个人认为所有这些必要的双引号只会使语句更难阅读)
  • @a_horse_with_no_name 感谢您的建议。问题是我使用的是 ASP.NET 代码优先方法。所以所有的数据库表都是由 ASP.NET 创建的,我不知道为什么它把所有这些双引号

标签: sql database postgresql


【解决方案1】:

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

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

【讨论】:

  • 如果我删除这些,我会收到 column "todate" does not exist 错误
  • 可以包含Reservation的表结构吗?
  • 在问题中添加了create 脚​​本
  • @JohnyStark "todate" 与您所拥有的列名称不同:"toDate"。详见手册:postgresql.org/docs/current/static/…
  • @JohnyStark 很高兴我能帮助你:) 要了解我为什么会出错-请考虑上面给你的a_horse_with_no_name 的文档。
猜你喜欢
  • 2017-08-31
  • 2019-05-27
  • 2017-06-28
  • 2015-04-07
  • 1970-01-01
  • 2021-05-13
  • 2021-12-21
  • 2020-06-16
  • 2013-09-09
相关资源
最近更新 更多