I was working on a function wich should return me a due date for a billing system, when all of a suden, an error show up: I cannot convert a date in string to a datetime. An excerpt of the code is:
declare @mes varchar = cast(month(getdate()) as varchar),
@ano varchar = cast(year(getdate()) as varchar),
@dia varchar = cast(day(getdate()) as varchar);
select convert(smalldatetime, @ano + '.' + @mes + '.' + @dia , 102 ) -- Error here!!!
The result string from @ano + '.' + @mes + '.' + @dia was '2.6.15' (I am using the ANSI format, i.e. 102). I could figure out that issuing a simple select statement:
select @ano + '.' + @mes + '.' + @dia, cast(year(getdate()) as varchar)
The solution: explicitly set the length of the variables. Look down here:
declare @mes varchar(2) = cast(month(getdate()) as varchar),
@ano varchar(4) = cast(year(getdate()) as varchar),
@dia varchar(2) = cast(day(getdate()) as varchar);
Finally, the goes (back) on...
Nenhum comentário:
Postar um comentário