【问题标题】:SQL Server : datalength conversionSQL Server:数据长度转换
【发布时间】:2014-07-21 19:11:54
【问题描述】:

我有一个表 dbo.files 有 9 列,其中包括 file_sizecreated_timefilepath

示例值:

  • file_size = 528300
  • created_time = 2012-06-28 09:31:17.610

我有以下查询,我试图显示这些文件“今天”写入文件系统的总 MB 数。

select 
    sum(datalength(f.file_size)) / 1048576.0 AS 'Storage Used Today"
from 
    dbo.files AS f
where 
    f.created_time >= CAST(getdate() as DATE)
    and f.created_time < CAST(DATEADD(day, 1, getdate()) as DATE)

结果是“0.173525810”。有没有办法移动小数点以显示正确的值?

谢谢

【问题讨论】:

  • 我想你误解了那个函数的作用......
  • 可能是这样。有没有办法让 file_size 的总和显示为 MB?
  • 你为什么使用数据长度???移动小数位是非常基本的数学运算。向右移动除以 10,向左移动乘以 10。
  • file_size 的数据类型是数字数据类型还是字符串?
  • 完全摆脱函数调用。剩下的应该可以工作。

标签: sql-server sql-server-2008 datalength


【解决方案1】:

SUM(DATALENGTH(x)) 告诉您数字表示的字节大小。

这不是你需要的。

例如,如果数据类型是整数(4 字节),并且列中有三行没有空值,则无论实际数字内容如何,​​它都会计算为 12。

只需删除函数调用。

sum(f.file_size) / (1024.0 * 1024)

工作正常

【讨论】:

    猜你喜欢
    • 2022-12-08
    • 1970-01-01
    • 1970-01-01
    • 2016-06-25
    • 2012-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-29
    相关资源
    最近更新 更多