Sql 按数据筛选的列和表
在本表中:Sql 按数据筛选的列和表,sql,sql-server,visual-studio-2010,sql-server-2008,Sql,Sql Server,Visual Studio 2010,Sql Server 2008,在本表中: Total Data ----------------------------- 1 2013-07-10 16:37:29.573 1,5 2013-07-10 16:38:29.573 0,75 2013-07-10 16:39:29.573 1,99 2013-07-10 16:40:29
Total Data
-----------------------------
1 2013-07-10 16:37:29.573
1,5 2013-07-10 16:38:29.573
0,75 2013-07-10 16:39:29.573
1,99 2013-07-10 16:40:29.573
我一直在编写以下ms sql过程:
ALTER proc [dbo].[empcx](@caixa int,@inicio datetime)as
select sum(total) ttotal from alteraca
where (DATA >= @inicio AND DATA <= @inicio) and caixa=@caixa and pedido <>0
并且只返回null,需要强制转换还是什么???
我用这个参数在C中调用这个过程
label4.Text = dateTimePicker1.Value.ToShortDateString();
参数@inicio的值为2013-07-11 0:00:00.000 但在这个过程中,您将该值与包含时间成分的日期进行比较,例如2013-07-10 16:37:29.573
由于您使用的是DATA>=@inicio和DATA,参数@inicio的值为2013-07-11 0:00:00.000 但在这个过程中,您将该值与包含时间成分的日期进行比较,例如2013-07-10 16:37:29.573
由于您使用的是DATA>=@inicio和DATA,我同意Bingham先生的答案,但我会使用稍微不同的方法进行比较:
ALTER proc [dbo].[empcx](
@caixa int,
@inicio datetime
)
as
select sum(total) ttotal
from alteraca
where (DATA >= @inicio AND DATA < DATEADD(dd, 1, @inicio))
and caixa=@caixa
and pedido <>0
我没有运行测试,但我相信这会更快
此外,如果total的值实际上是以逗号分隔的数字字符串形式显示的值,那么当您实际开始返回记录时,查询将崩溃。逗号分隔的字符串不能应用SUM,因为它不能解析为单个数字 我同意宾厄姆先生的答案,但我会使用稍微不同的方法进行比较:
ALTER proc [dbo].[empcx](
@caixa int,
@inicio datetime
)
as
select sum(total) ttotal
from alteraca
where (DATA >= @inicio AND DATA < DATEADD(dd, 1, @inicio))
and caixa=@caixa
and pedido <>0
我没有运行测试,但我相信这会更快
此外,如果total的值实际上是以逗号分隔的数字字符串形式显示的值,那么当您实际开始返回记录时,查询将崩溃。逗号分隔的字符串不能应用SUM,因为它不能解析为单个数字 DATA>=@inicio和DATA是的,正如@mr.Reband所说的,您的where子句过滤掉了除那些where DATA='@inicio'之外的所有值。您试图在where子句中实现什么?DATA>=@inicio和DATA是的,正如@mr.Reband所述,您的where子句正在过滤掉除where DATA='@inicio'之外的所有值。你想在where子句中实现什么?有趣的变化。我会找时间调查的。我以后会调查的
ALTER proc [dbo].[empcx](
@caixa int,
@inicio datetime
)
as
select sum(total) ttotal
from alteraca
where (DATA >= @inicio AND DATA < DATEADD(dd, 1, @inicio))
and caixa=@caixa
and pedido <>0