我正在創建一個資料庫,并且我想創建一個僅允許插入 2000 年之后的日期的約束檢查。
這是我存盤日期的地方:
CREATE TABLE User (
username varchar(20) NOT NULL,
birthdate DATE NOT NULL,
CONSTRAINT user_birthdate_ck CHECK (birthdate > 2000)
)
uj5u.com熱心網友回復:
2000不是日期,而是數字。
您需要使用明確的日期格式在引號中指定日期。最好使用'YYYYMMDD'。
CREATE TABLE [User] (
username varchar(20) NOT NULL,
birthdate DATE NOT NULL,
CONSTRAINT user_birthdate_ck CHECK (birthdate > '20000101')
);
db<>小提琴
假設您在2000 年之后確實想要,那么您可能想要
CONSTRAINT user_birthdate_ck CHECK (birthdate >= '20010101')
如果您有時間組件,請勿使用,因為它不正確。> '20001231'
uj5u.com熱心網友回復:
將年份更改為正確格式的日期,如下所示:
CONSTRAINT user_birthdate_ck CHECK (birthdate > '2000/12/31')
在 CREATE TABLE 之前明確設定使用的日期格式也是謹慎的做法,如下所示:
SET DATEFORMAT ymd;
GO
uj5u.com熱心網友回復:
請注意,答案中顯示的所有日期字串運算式都不是 ISO SQL 格式,并且不會在某些會話引數(如語言或其他一些引數)下完成這項作業,尤其是在批處理中與非 Transct SQL 混合......
唯一不會給您帶來任何麻煩的字串格式是 SQL ISO 長日期格式:
'AAAA-MM-JJ'
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/504864.html
上一篇:獲取2個字串之間的字串
