0
我测试,看看我能传递一个字符串到我的SQLite数据库到如下表:为什么我应该在SQL中使用datetime?
CREATE TABLE TIMES(
ID INT PRIMARY KEY ,
TIME_START DATETIME DEFAULT CURRENT_TIMESTAMP ,
TIME_STOP DATETIME ,
CONSTRAINT FUTURE_DATE CHECK
(TIME_START >= CURRENT_TIMESTAMP AND TIME_STOP >= CURRENT_TIMESTAMP)
);
像这样:
INSERT INTO TIMES VALUES (1, "2016-07-31 07:08:00", NULL)
它穿过,没问题。我有点惊呆了,看到这个,所以我尝试了另一个值:
INSERT INTO TIMES VALUES (2, "9999999999 07:08:00", NULL)
它也通过了。这让我担心,因为它应该只允许DATETIME
的值,而不是一堆数字。我尝试了一些其他值:
INSERT INTO TIMES VALUES (3, "9999999999:::::::::", NULL);
INSERT INTO TIMES VALUES (4, "9999999999 99:99:99", NULL);
INSERT INTO TIMES VALUES (6, "this is some really random text", NULL);
INSERT INTO TIMES VALUES (6, "9999999999999999999", NULL);
除了最后一个工作。我的问题是,为什么在不验证数据类型时使用日期时间?不能只使用CHAR
(实际上,CHAR
比DATETIME
有更多的限制,它限制了字符的数量)?
所有这些都在测试:
- http://sqliteonline.com/
- Python的
sqlite3
为什么要输入任何东西呢?这样做有没有优势? (除了知道什么类型应该在哪里) –
与其他SQL DB的兼容性。 –