我正在使用两个具有Date和float值的列,现在我需要将这两列合并为一个字符串。对于日期我可以将其转换为字符串。但是对于浮点值,它会将十进制值四舍五入,但情况并非如此。
例如我的浮点值是204.8,日期ID是2014-11-11。现在,当我作为字符串组合时,它应该导致为' 2014-11-11 204.8'但它正在向我展示' 2014-11-11 204'当我转换浮动值。我正在使用此查询,
DECLARE @myDateTime DATETIME
DECLARE @StandardCost INT
SET @myDateTime = '2011-12-24 00:00:00.000'
SET @StandardCost = 204.8
SELECT LEFT(CONVERT(VARCHAR, @myDateTime, 120), 10)+ ' ' + CAST(@StandardCost AS VARCHAR(MAX))
结果:2011-12-24 204
任何人都可以帮助我获得精确浮点值,小数点为字符串。
答案 0 :(得分:5)
您已将@StandardCost
定义为int
。它不会保留小数部分。将其更改为numeric
或其他一些支持小数位的数据类型。
答案 1 :(得分:0)
首先,您需要将其声明为FLOAT
,而不是INT
然后,您可以尝试使用STR() function
DECLARE @StandardCost FLOAT
SET @StandardCost = 204.8
SELECT STR(@StandardCost,10,1)
答案 2 :(得分:-1)
正如@Sean Lange所说,将INT变量更改为FLOAT
DECLARE @myDateTime DATETIME
DECLARE @standardcost FLOAT; -- <-------- Changed INT to FLOAT
SET @mydatetime = '2011-12-24 00:00:00.000';
SET @standardcost = 204.8;
SELECT LEFT(CONVERT(VARCHAR, @mydatetime, 111), 10) + ' ' + CAST(@standardcost AS VARCHAR(MAX));