gpt4 book ai didi

postgresql - 在 postgresql 的 TIMESTAMP 列上应用日期的唯一约束

转载 作者:行者123 更新时间:2023-11-29 14:27:52 25 4
gpt4 key购买 nike

我有一个 postgresql 表作为

CREATE TABLE IF NOT EXISTS table_name
(
expiry_date DATE NOT NULL,
created_at TIMESTAMP with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP(0),
CONSTRAINT user_review_uniq_key UNIQUE (expiry_date, created_at::date) -- my wrong attempt of using ::
)

我想在此表上设置唯一约束,使 expiry_date 和 created_at 的日期应该是唯一的。问题是 created_at 列是时间戳而不是日期。

那么有什么方法可以设置唯一约束,使 expire_date 和 created_at::date 应该是唯一的?

我的尝试是使用
CONSTRAINT user_review_uniq_key UNIQUE (expiry_date, created_at::date) 无效。

最佳答案

如果您的创建日期不需要时区:创建一个唯一索引如下:

create unique index idx_user_review_uniq_key on  table_name (expiry_date, cast(created_at as date));

如果您非常需要一个时区,那么您需要使用一个小技巧 (https://gist.github.com/cobusc/5875282):

create unique index idx_user_review_uniq_key on  table_name (expiry_date, date(created_at at TIME zone 'UTC'));

关于postgresql - 在 postgresql 的 TIMESTAMP 列上应用日期的唯一约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55846991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com