DECLARE @return_value int EXEC @return_value = [dbo].[CWG_JSMX] @BDate = '2018-01-1', @EDate = '2018-01-31 23:59:59', @MD = N'XM002-B5' SELECT 'Return Value' = @return_value GO
我有两条数据是2018-01-31当天的,在查询管理器中查询存储过程查不到。
但是我把查询语句从存储过程中拿出来,用同样的参数赋值查询,却可以查询到2018-01-31当天的数据。
为什么?
下面是存储过程代码:
省略了部分字段
ALTER PROC [dbo].[CWG_JSMX] ( @BDate AS DATE , @EDate AS DATE , @MD AS VARCHAR(30) ) AS BEGIN SELECT t1.OrderCode , @BDate AS JSBeginDt , @EDate AS JSEndDt , t1.OrderType , t1.OrderTime , t1.MemberCode , od.FeeTotal FROM dbo.S_Order AS t1 LEFT JOIN dbo.S_OrderDetail od ON t1.ordercode = od.ordercode WHERE t1.StoreCode = @MD AND ( t1.OrderTime >= @BDate AND t1.OrderTime <= @EDate ) AND t1.PayStatus!='未支付' END GO
参数有问题吧 @BDate = '2018-01-1', 传递成@BDate = '2018-01-1 00:00:00',
你的参数查询的时候要把结束时间加一天,或者查询时把时间格式化一下 CONVERT(VARCHAR(10),t1.OrderTime,120)
我直接把sql语句拿出来替换参数,可以查询到数据,说明我的sql语句没问题。
@h_Vincent: 这个是sql里的时间格式,如果不转换的话查询@BDate = '2018-01-1', @EDate = '2018-01-31 23:59:59',其实是@BDate = '2018-01-1', @EDate = '2018-01-30 23:59:59'号的
@小鹿L: 一样的
@h_Vincent: 你是怎么改的啊
@小鹿L: 是参数类型的问题。应该是DATETIME,而不是DATE
是参数定义的问题,应该是DATETIME,而不是DATE