为了避免在表示层中进行外观调整,我需要从数据输出中删除尾随零 - 例如在我的营业时间列中,我需要" 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初学者。非常感谢任何帮助!
答案 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()
您可以根据自己的喜好对其进行格式化。