【问题标题】:mysql casting weirdnessmysql铸造怪异
【发布时间】:2019-05-12 22:30:24
【问题描述】:

我正在对 MySQL 服务器尝试以下简单的表达式:

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

我收到以下错误:

[42000] [MySQL][ODBC 8.0(w) Driver][mysqld-8.0.13]您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行 (1064) (SQLExecDirectW) 的“时间戳”附近使用正确的语法

[42000] [MySQL][ODBC 8.0(w) Driver][mysqld-8.0.13]您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行 (1064) (SQLExecDirectW) 的 'varchar(55))' 附近使用正确的语法```

什么给了?这不是标准的 SQL 语法吗?如果我将timestamp 更改为datetime 可以,如果我将varchar 更改为char 也可以,但我不明白为什么我也必须这样做。

我正在使用 ODBC、Mysql 8,据我所知,这在几乎任何其他 RDBMS 中都可以正常工作?

【问题讨论】:

  • 感谢@Gordon Linoff 的格式化

标签: mysql sql ansi-sql


【解决方案1】:

您需要阅读cast() 上的documentation。与大多数数据库不同,它不采用任意类型。

以下是允许的:

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

您的版本不是。这就是函数的工作原理。

【讨论】:

  • 我读到了,那页上的什么地方是你刚刚写的?
  • @J.Doe 。 . .在convert() 下有一段以“允许使用这些类型值:”开头。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-11
  • 2019-07-07
相关资源
最近更新 更多