0

我正在使用 sqlserver 2005。

我的表 tradefile 包含以下重要列:

Scrip_Code : nvarchar(25)
Sauda_Date : datetime   [value example: 3/1/2013 9:15:04 AM]
TradeType  : nvarchar(5)
Market_Rate: float

我想取特定 sauda_date、scrip_code 和 tradetype 的平均市场价格。

为此,我触发了以下查询:

select avg(Market_Rate) 
from tradefile 
where 
Scrip_Code='ACC' and 
Sauda_Date =convert(datetime,'03/21/2013') 

此查询返回空值。

上述查询有什么错误?

注意: sauda_date 是日期时间,并且有时间和日期,如上例所示 [3/1/2013 9:15:04 AM]

请指导我。

4

2 回答 2

2
SELECT CONVERT(DATETIME,'03/21/2013')

如果你运行上面的,它将打印:

2013-03-21 00:00:00.000

因此,您尝试将其与时间相匹配:

2013-03-21 09:15:04.123

显然不会匹配。

您需要将两者都转换为 DATE。

Sauda_Date >= CONVERT(DATETIME, '03/21/2013') AND 
Sauda_Date < DATEADD(dd, 1, CONVERT(DATETIME, '03/21/2013'))

源自这个答案

测试

编辑:删除CONVERT(DATE, Sauda_Date)方法,因为DATE在 SQL Server 2005 中没有定义,因为它可能是一个坏主意

于 2013-04-10T11:02:04.253 回答
0

错误是您的where子句过滤掉了所有行,或者Market_Rate总是NULL. 执行以下调试查询以确认:

select * --debug
from tradefile 
where 
Scrip_Code='ACC' and 
Sauda_Date =convert(datetime,'03/21/2013') 
于 2013-04-10T10:44:45.980 回答