|
|
Question : Date to String Conversion
|
|
Does anyone know why this won't work in Sybase but works in MS SQl
I have an Stored Procedure. I want to get the current month end from a string and return the value as a string '20080429'
So I pass in string '20080429' and it returns a string '20080430' This is want I've written but it doesn't work....
CREATE PROCEDURE Caoimhe @value_dt varchar(8) as declare @current_monthend varchar(8) declare @monthend varchar(8) select @monthend = CONVERT( varchar(8), dateadd(day, -1,dateadd(month, 1,convert(datetime,left(@value_dt,6) + '01',112))), 112)
return @monthend
|
Answer : Date to String Conversion
|
|
Assuming ASE. Please confirm which Sybase product and version you are using.
It works fine for me...
begin declare @value_dt varchar(8) set @value_dt = '20080423' select CONVERT( varchar(8), dateadd(day, -1,dateadd(month, 1,convert(datetime,left(@value_dt,6) + '01',112))), 112) end
Returns "20080430"
Oh, I see what the issue is. You are trying to use the RETURN statement to get the output value. That is a no-no for stored procedures. You really need to use a stored function.
ASE v15 supports T-SQL function and the CREATE FUNCTION syntax. You are trying to use the CREATE PROCEDURE syntax. With a procedure, any return value other than 0 is seen as an error.
If you are using a version of Sybase prior to 15, you do not have the function syntax available to you. You have one or two choices: you can call the procedure with the @monthend as and OUTPUT argument or, if you have it licensed, you can create a Java SQL function that will do what you want as well.
Regards, Bill
|
|
|
|
|