Моя функция Sql TIME (STR_TO_DATE) не работает - PullRequest
0 голосов
/ 28 сентября 2018

Я пытаюсь сохранить значение времени в моей базе данных, но STR_TO DATE FUNCTION не работает в mysql, но когда я пробую его на движке w3school sql, он работает нормально с тем же форматом.

INSERT INTO `discussions`( `Name`, `Topic`, `Author`, `Auth_ID`, `day`, `Date`, `Time`, `Activated`, `Topic_ID`) 
VALUES ('asdfgh','PCB Designing','ShahzaibAhmed',1,'Sunday','2018-10-28',Time(STR_TO_DATE( '03:57:AM', '%h:%i:%p' ) ),1,2);

Это ошибка, которую я получаю, когда пытаюсь это сделать

enter image description here

Кроме того, когда я меняю его на дату, он работает нормально и корректно вставляется без каких-либо ошибок.

INSERT INTO `discussions`( `Name`, `Topic`, `Author`, `Auth_ID`, `day`, `Date`, `Time`, `Activated`, `Topic_ID`) 
VALUES ('asdfgh','PCB Designing','ShahzaibAhmed',1,'Sunday','2018-10-28',Time(STR_TO_DATE( '20120801', '%Y%m%d' ) ),1,2)

enter image description here

1 Ответ

0 голосов
/ 28 сентября 2018

Кажется, зависит от версии MySQL:

SELECT STR_TO_DATE( '03:57:AM', '%h:%i:%p' )

Анализирует время в MySQL-5.6 , но не в MySQL-5.7 или MySQL-8.0 .

MariaDB-10.3 и 10.2 правильно анализирует результат.

Ошибка MySQL 71386 подчеркивает, что sql_mode =NO_ZERO_DATE, используемый по умолчанию в более поздних версиях MySQL, оказывает влияние, хотя и только на время.

MariaDB-10.3 возвращает правильное событие результата, когдаsql_mode=NO_ZERO_DATE установлено.

Чтобы обойти эту ошибку, отключите 'NO_ZERO_DATE' в сеансе перед этим запросом:

set session sql_mode=REPLACE(@@SESSION.sql_mode,'NO_ZERO_DATE','')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...