我在SQLite中创建表并希望检查日期的语法。它应该是'YYYY-MM-DD'。当我将数据插入此表时,当我在插入日期时键入其他内容时,它会给我错误,例如插入成员(DoB)值('2013-120qw')。它应该只是例如'2013-12-04'。
CREATE TABLE Member(
email VARCHAR(100) NOT NULL,
name VARCHAR(100) NOT NULL,
DoB TEXT(10) NOT NULL CHECK (length(DoB) IN (10) AND date(DoB) BETWEEN date('1900-01-01') AND date(CURRENT_DATE)),
telephone VARCHAR(11) NOT NULL CHECK (length(telephone) IN (11)),
PRIMARY KEY (email)
);
答案 0 :(得分:1)
问题是date()
为无效的日期字符串返回NULL,而NULL不会使检查约束失败。
添加date()
感到满意的单独检查:
...
DoB TEXT(10) NOT NULL CHECK (date(DoB) IS NOT NULL AND
length(DoB) = 10 AND
DoB BETWEEN '1900-01-01' AND CURRENT_DATE),
...
答案 1 :(得分:0)
我感谢DATE类型很有用,因为MySql没有约束
CREATE TABLE Member(
email VARCHAR(100) NOT NULL,
name VARCHAR(100) NOT NULL,
DoB date NOT NULL,
telephone VARCHAR(11) NOT NULL CHECK (length(telephone) IN (11)),
PRIMARY KEY (email)
);
如果您需要帮助,此链接将为您提供帮助 https://dev.mysql.com/doc/refman/5.0/en/datetime.html