sql - SQL Server 中的 DateDiff/Nb 问题

标签 sql sql-server casting datediff

<分区>

当我在 SQL Server 的 SELECT 语句中使用 DateDiff 时,我得到一个 int 值:

select DATEDIFF(day,'01/01/2011','15/05/2011') 
from Table1

结果是:134

select DATEDIFF(day,'01/01/2011','15/05/2011')/15 
from Table1

结果是:8

select cast(DATEDIFF(day,'01/01/2011','15/05/2011') / 15 as Decimal(9,2)) 
from Table1

结果是:8.00

但实际上结果是:8.9333333

如何将结果从 int 更改为 Double

我想得到结果 8.9333333 - 我该怎么做?

最佳答案

问题是您在分割后使用了 CAST。如果您在 CAST 之后执行除法,您将得到您想要的答案:

select 
   cast(DATEDIFF(day,'01/01/2011','15/05/2011') as Decimal(9,2))/15 
from Table1

关于sql - SQL Server 中的 DateDiff/Nb 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27123953/

相关文章:

mysql - 使用引用原始表的子查询删除

mysql - 我只知道 Left Join SQL 查询中的 2 个表。如果我有 3 个或更多表怎么办?

c# - 将对象列表转换为 List 与 IList

sql - 如何在 SQL Server 中匹配排除括号之间差异的文本?

SQL LIKE 运算符不适用于逗号分隔列表

c# - 转换为 LINQ To Entity 查询中的类型

C++ 指针作为 DWORD

php - 防止MySQL双重插入

sql - 如何使用单个 Insert 语句插入数十万条记录?

mysql - 如何使用 SQL 选择特定字段的重复行,并允许存在时间差?