SQL 查询中的 CONVERT 或 CAST 字段

Posted

技术标签:

【中文标题】SQL 查询中的 CONVERT 或 CAST 字段【英文标题】:CONVERT or CAST field in SQL Query 【发布时间】:2014-04-09 15:34:48 【问题描述】:

我试图从中提取数据的 mysql 数据库中有一个 TimeStamp 字段。我正在尝试将其作为字符串获取,因此我一直在使用以下查询:

select CONVERT(VARCHAR, date_created, 120) from junk;

它抛出错误:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VARCHAR, date_modified, 120) from junk limit 10' at line 1

谁能告诉我我做错了什么?

【问题讨论】:

MySql 和 Sql Server 是两个完全不同的产品。你使用MySql的错误信息,not Sql Server. 很确定 CONVERT 不是 ANSI 标准并且特定于 SQL Server。 CAST 是标准的,但我认为不允许格式化代码。 VarChar 需要一个大小,例如VarChar(10) @TonyHopkinson 实际上在 SQL Server 中 varchar 没有调整大小会得到类似 30 的隐式大小。不过,问题在于将 T-SQL 代码与 MySQL RDBMS 混合使用。 是的,因为某种原因,我看到转换和样式立即启动了我的 sql server... 【参考方案1】:

如果您想明确格式化为 yyyymmdd(sql server 中的样式 120)

Select DATE_FORMAT(somedate, '%Y%m%d') From SomeTable

【讨论】:

感谢您的回答!格式不是我想要的,但我改变了它以获得我需要的东西。我使用了以下代码:select DATE_FORMAT(date_created, '%Y-%m-%d %h:%i:%s') from junk;。再次感谢!【参考方案2】:

MySQL中的CONVERT()用于不同字符集之间的转换,需要DATE_FORMAT()

SELECT DATE_FORMAT(date_created, '%Y%m%d %H%i%S')
FROM Junk

更新:原来CAST() 错误地使用了VARCHAR(),但CAST() 也可以工作:

SELECT CAST(date_created AS CHAR(10))
FROM Junk

DATE_FORMAT() options

【讨论】:

mysql> select CAST(date_created AS VARCHAR(30)) from junk; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VARCHAR(30)) from junk' at line 1 还有什么建议吗? CAST() 应该也可以工作 - 但DATE_FORMAT() 确实更可取。 @ypercube 为什么CAST() 给他一个错误?我是一名 SQL Server 人,还有很多关于 MySQL 的知识。 啊,应该是CAST(date_created AS CHAR(30))或者更好:CAST(date_created AS CHAR(10))【参考方案3】:

在 MySql 中,CONVERT() 函数用于在字符集(如 utf-8 或 ascii)之间转换现有的字符串类型(如 varchar)。要格式化 TimeStamp 列,请使用 FROM_UNIXTIME() 函数。

【讨论】:

FROM_UNIXTIME 将该列中的所有数据转换为NULLselect FROM_UNIXTIME(date_created) from junk; 是我使用的查询。

以上是关于SQL 查询中的 CONVERT 或 CAST 字段的主要内容,如果未能解决你的问题,请参考以下文章

SQL 中的 CAST 和 CONVERT 是不是相同? [复制]

sql 中convert和cast区别

SQL Server 与 T-SQL 中的 Cast 和 Convert 函数有啥区别? [复制]

sql语句中的convert是啥意思

如何在 t-sql (Azure Synapse) 的 CAST/CONVERT 中使用字符串函数

SQL Server cast() vs convert() [重复]