【发布时间】: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