尝试在SQL中删除尾随零时出现语法错误

时间:2017-03-12 18:37:17

标签: mysql sql

为了避免在表示层中进行外观调整,我需要从数据输出中删除尾随零 - 例如在我的营业时间列中,我需要" 2"而不是" 2.000"或" 18.5"而不是" 18.500"。

在审核了现有资源后,我提出了以下建议:

SELECT
  DATE_FORMAT(U.START_TIME + INTERVAL 1 hour, '%H:%i') as Start
, DATE_FORMAT(U.END_TIME + INTERVAL 1 hour, '%H:%i') as End
, CAST(CAST(TIMESTAMPDIFF(MINUTE, U.START_TIME, U.END_TIME)/60 as DECIMAL (6,2)) as FLOAT) as Hours
, REQUESTER_COMMENT as Requester_Commment
FROM VW_USER_SCHEDULE_INSTANCES U

我不断收到错误消息:

  

错误代码:1064。您的SQL语法有错误;检查   手册,对应右边的MySQL服务器版本   要在' FLOAT附近使用的语法,REQUESTER_COMMENT为Requester_Comment

我正在努力找出需要调整的内容以避免错误。尝试集成float会阻止任何输出。抱歉,如果我错过了一些明显的东西 - 我是一个完整的SQL初学者。非常感谢任何帮助!

2 个答案:

答案 0 :(得分:2)

你应养成阅读CAST()等功能文档的习惯。见https://dev.mysql.com/doc/refman/5.7/en/cast-functions.html#function_cast

如果您阅读了文档,您将了解到CAST()不支持FLOAT作为目标类型。您可以使用BINARY,CHAR,DATE,DATETIME,DECIMAL,JSON,NCHAR,SIGNED INTEGER,TIME或UNSIGNED INTEGER。但不是FLOAT或DOUBLE。

我建议您尝试ROUND()功能。见https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_round

但我的首选答案是你应该使用SQL来获取原始数据,并在应用程序代码中对给定的表示进行格式化。

答案 1 :(得分:0)

只需使用select A.movie, A.theater, max(A.price) from offer A group by A.movie, A.theater

to_seconds()

您可以根据自己的喜好对其进行格式化。