从我的代码中,我使用以下方法调用SP:
using (var cmd = new SqlCommand("sp_getnotes"))
{
cmd.Parameters.Add("@ndate", SqlDbType.SmallDateTime).Value
= Convert.ToDateTime(txtChosenDate.Text);
cmd.CommandType = commandType;
cmd.Connection = conn;
var dSet = new DataSet();
using (var adapter = new SqlDataAdapter { SelectCommand = cmd })
{
adapter.Fill(dSet, "ntable");
}
}
Run Code Online (Sandbox Code Playgroud)
存储过程本身运行一个简单的查询:
SELECT * FROM tblNotes WHERE DateAdded = @ndate
Run Code Online (Sandbox Code Playgroud)
问题是没有记录被退回!DateAdded是一个smalldatetime专栏.
当我将查询更改为以下内容时,它的工作原理如下:
SELECT * FROM tblNotes WHERE CONVERT(DATETIME, FLOOR(CONVERT(FLOAT, DateAdded))) = @ndate
Run Code Online (Sandbox Code Playgroud)
为什么会这样?此更改会影响整个应用程序,我希望在更改每个查询之前找到根本原因...我们所做的唯一更改是使用参数化查询并从SQL Server 2005升级到2008.
TIA.
我有一张像这样的桌子:
Code | BuildDate | BuildQuantity
---------------------------------
1 | 2013-04-10 | 4
1 | 2014-09-23 | 1
1 | 2014-08-20 | 2
7 | 2014-02-05 | 4
Run Code Online (Sandbox Code Playgroud)
我希望LINQ查询为每个代码选择最新构建日期,为该代码选择BuildQuantity,依此类推所有记录,并总结它.所以对于上面的数据,结果应该是1 + 4 = 5.
这就是我正在尝试的:
var built = (from tb in db.Builds
orderby tb.BuildDate descending
group tb by tb.Code into tbgrp
select tbgrp.Sum(c => c.BuildQuantity)).First();
Run Code Online (Sandbox Code Playgroud)
这个查询返回7 ...我做错了什么?