mysql кастинг странность - PullRequest
       36

mysql кастинг странность

0 голосов
/ 12 декабря 2018

Я пытаюсь использовать следующие простые выражения для сервера MySQL:

select cast('2010-01-01' as timestamp)
select cast('2010-01-01' as varchar(55))

и получаю следующую ошибку:

[42000] [MySQL] [ODBC 8.0(w) Драйвер] [mysqld-8.0.13] В вашем синтаксисе SQL есть ошибка;проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с отметкой времени в строке 1 (1064) (SQLExecDirectW)

или

[42000] [MySQL] [Драйвер ODBC 8.0 (w)] [mysqld-8.0.13] У вас ошибка в синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с 'varchar (55))' в строке 1 (1064) (SQLExecDirectW) `` `

Что дает?Разве это не стандартный синтаксис SQL?Если я изменяю timestamp на datetime, это работает, и если я изменяю varchar на char, это также работает, но я не понимаю, почему я должен это сделать.

Я использую ODBC, Mysql 8 и, насколько я знаю, это работает нормально почти во всех других СУБД?

1 Ответ

0 голосов
/ 12 декабря 2018

Вам необходимо прочитать документацию на cast().В отличие от большинства баз данных, он не принимает произвольные типы.

Допустимо следующее:

select cast('2010-01-01' as datetime);
select cast('2010-01-01' as char);

Ваши версии не разрешены.Так работает функция.

...