所以我尝试运行此查询
ALTER PROCEDURE [dbo].[sp_ImportMonetareWinmentor]
@dataStart datetime ,
@dataFinal datetime
AS
set language english
declare @erroare int
if(@dataStart > @dataFinal) set @erroare = -1; set language english
declare
@dataStart datetime = '2011-05-15T00:47:00' ,
@dataFinal datetime = '2011-05-17T15:43:00'
print @dataStart
print @dataFinal
EXEC [sp_ImportMonetareWinmentor] @dataStart,@dataFinal
我的存储过程有两个日期时间参数:
ALTER PROCEDURE [dbo].[sp_ImportMonetareWinmentor]
@dataStart datetime ,
@dataFinal datetime
AS
set language english
declare @erroare int
if(@dataStart > @dataFinal) set @erroare = -1;
else begin
print('Procedure')
return @erroare
end
-- Insert statements for procedure here
END
知道我为什么会收到错误
从字符串转换日期和/或时间时转换失败。
我知道它与日期时间有关,但是我无法看到我做错了什么,或者为什么SQL想要将我的输入参数从字符串转换为日期,因为它们已经是字符串
答案 0 :(得分:2)
YYYY-MM-DD hh:mm
并不明确,就SQL Server而言 - 它有时会尝试将其解释为YYYY-DD-MM hh:mm
,因此当它不知道第17个月是哪个时会跳过。尝试:
declare
@dataStart datetime = '2011-05-15T00:47:00',
@dataFinal datetime = '2011-05-17T15:43:00'
证明问题。这样:
set language british
go
declare
@dataStart datetime = '2011-05-15 00:47',
@dataFinal datetime = '2011-05-17 15:43'
生成错误。这样:
set language english
go
declare
@dataStart datetime = '2011-05-15 00:47',
@dataFinal datetime = '2011-05-17 15:43'
不