SQL DATEADD 函数未按预期工作

问题描述 投票:0回答:1

我正在创建一个客户表,为了添加客户,客户必须年满 21 岁。我在出生日期添加了

CHECK
。它适用于除 21 年前的确切日期之外的所有日期。逻辑似乎是正确的。我不知道为什么要这样做。

CREATE TABLE customers(
    customer_ID int,
    dob date CHECK (dob < DATEADD(YEAR, -21, GETDATE()))
);

INSERT INTO customers VALUES(1, '09/26/2003'); 

--按预期工作。

不允许插入。

INSERT INTO customers VALUES(1, '09/25/2003'); 

--这应该被阻止。但它仍然允许

INSERT

sql constraints dateadd
1个回答
0
投票

GETDATE()
,不管它的名字如何,都会返回当前日期戳,包括时间。

您只想在当前日期进行操作吗?

   dob date CHECK DATEADD(year, -21, CONVERT(DATE, GETDATE()))
© www.soinside.com 2019 - 2024. All rights reserved.