я тестировал, чтобы увидеть, если я мог передавать строки в моей базе данных SQLite в следующей таблице:Почему я должен использовать datetime в SQL?
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/
- Пайтона
sqlite3
Зачем мне вводить что-нибудь? Есть ли преимущества в этом? (Не знаю, какие типы должны быть где) –
Для совместимости с другими SQL-базами данных. –