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的兼容性。 –