小编Jim*_*Jim的帖子

Transact SQL日期查询返回没有结果

从我的代码中,我使用以下方法调用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.

c# sql t-sql datetime sql-server-2008

3
推荐指数
1
解决办法
696
查看次数

LINQ基于最新日期的条目总和

我有一张像这样的桌子:

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 ...我做错了什么?

c# linq linq-to-sql

2
推荐指数
1
解决办法
147
查看次数

标签 统计

c# ×2

datetime ×1

linq ×1

linq-to-sql ×1

sql ×1

sql-server-2008 ×1

t-sql ×1