Reputation: 2128
So I try to run this query
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
My stored procedure has two datetime parameters:
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
Any idea why I get the error
Conversion failed when converting date and/or time from character string.
I know it has something to do with the datetime, but I can't see what I'm doing wrong, or why does SQL want to convert my input param to date from string as they are already string.
Upvotes: 0
Views: 1361
Reputation: 239636
YYYY-MM-DD hh:mm
isn't unambiguous, so far as SQL Server is concerned - it will sometimes try to interpret it as YYYY-DD-MM hh:mm
and so trips over when it doesn't know which the 17th month is. Try:
declare
@dataStart datetime = '2011-05-15T00:47:00',
@dataFinal datetime = '2011-05-17T15:43:00'
Demonstration of the problem. This:
set language british
go
declare
@dataStart datetime = '2011-05-15 00:47',
@dataFinal datetime = '2011-05-17 15:43'
Generates the error. This:
set language english
go
declare
@dataStart datetime = '2011-05-15 00:47',
@dataFinal datetime = '2011-05-17 15:43'
doesn't.
Upvotes: 2