Let's say you have a column in your main
table called RecordDate, and this column is of type nvarchar, with the date format yyyy/mm/dd.
In that case, you don't need the @para parameter in your stored procedure. Change it to something like this:
ALTER PROC [dbo].[Sel_monthreport] @fdate NVARCHAR(50),
@sdate NVARCHAR(50)
AS
BEGIN
SELECT *
FROM main
WHERE main.recorddate BETWEEN @fdate AND @sdate
END
Note, that this is a NVARCHAR comparison, ant it only works because your dates are stored in the format yyyy/mm/dd. In general, a better approach would be to compare DATETIME datatypes (better performance and less error-prone).
You can convert an NVARCHAR value to a DATETIME datatype using the CONVERT function: http://msdn.microsoft.com/en-us/library/ms187928.aspx