3
IN 절에서 사용하려면 쉼표로 구분 된 날짜 문자열을 저장 프로 시저에 보내려고합니다. 그러나 "날짜 및/또는 시간을 문자열로 변환 할 때 변환이 실패했습니다."라는 오류 메시지가 나타납니다.저장 프로 시저, 전달 날짜 배열, 쉼표로 구분됩니다. 변환 오류
나는이 날짜를 사용하여 일치하는 가격을 찾으려고합니다. C 번호 :을 디버깅 할 때
StringBuilder LastDaysOfEveryMonth = new StringBuilder();
DataAccess da = new DataAccess();
SqlCommand cm = new SqlCommand();
cm.CommandType = CommandType.StoredProcedure;
var pList = new SqlParameter("@DateList", DbType.String);
pList.Value = LastDaysOfEveryMonth.ToString();
cm.Parameters.Add(pList);
...
cm.CommandText = "spCalculateRollingAverage";
DataSet ds = da.ExecuteDataSet(ref cm);
전달 된 문자열의 값이 다음 DbType과 문자열 SQLDbType NVARCHAR와
'2013-07-31','2013-08-30','2013-09-30','2013-10-31','2013-11-29','2013-12-31',
'2014-01-31','2014-02-28','2014-03-31','2014-04-03',
.
모든 조언을 주시면 감사하겠습니다. SQL :
CREATE PROCEDURE [dbo].[spCalculateRollingAverage]
@StartDate DateTime,
@EndDate DateTime,
@Commodity nvarchar(10),
@PeakType nvarchar (10),
@BaseID int,
@NumberOfMonths int,
@DateList nvarchar(MAX)
AS
BEGIN
select TermDescription,ContractDate,Price,SortOrder into #tbtp from BaseTermPrice
inner hash join Term
on
Term.TermID = BaseTermPrice.TermID
where
BaseID = @BaseID and ((@PeakType IS NULL and PeakType is null) or
(@PeakType IS NOT NULL and [email protected]))
and ((@DateList IS NULL and ContractDate between @StartDate and @EndDate)
or (@StartDate IS NULL and ContractDate in (@DateList)))
order by
ContractDate,SortOrder
을 위해. – logixologist