2015-01-29 2 views
0

데이터 테이블에 datetime 데이터 형식의 열이 있는데이 테이블에서 날짜 값을 삽입하고 싶습니다. 텍스트 테이블에 상자 그러나 나는이 오류가 무엇입니까 :varchar 데이터 형식을 datetime 데이터 형식으로 변환하면 asp.net에서 범위를 벗어나는 값이 발생합니다.

The conversion of a varchar data type to a datetime data type resulted in an out-of-range value

여기 내 코드입니다 : 그것은 prfer_date에 실패

string prfer_date = txtDT_Particip.Text; 
int userId = 0; 
string constr = ConfigurationManager.ConnectionStrings["mycon"].ConnectionString; 

using (SqlConnection con = new SqlConnection(constr)) 
{ 
    using (SqlCommand cmd = new SqlCommand("Insert_User")) 
    { 
     using (SqlDataAdapter sda = new SqlDataAdapter()) 
     { 
      cmd.CommandType = CommandType.StoredProcedure; 
      cmd.Parameters.AddWithValue("@FullName", txtFName.Text.Trim()); 
      cmd.Parameters.AddWithValue("@PreferredDateStart", prfer_date.ToString()); 
     } 
    } 
} 

. 귀하의 도움에 감사드립니다

+0

[AddWithValue()를 이미 사용 중지 할 수 있습니까?] (http://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue- 이미 /)를 사용하고'.AddWithValue()'사용을 멈 추면 - 예상치 못한 결과를 초래할 수있다. 결과를 노래하십시오 ... –

답변

0

내가 놓친 한가지는 prefer_date입니다 문자열입니다. AddwithValue은 필드 유형에서 유형을 유추하므로 SQL 끝에서 nvarchar으로 처리하므로 오류가 발생합니다.

cmd.Parameters.Add(new SqlParameter("@PreferredDateStart", SqlDbType.DateTime) 
          { Value = prefer_date }); 

또는 당신은 DateTime 개체에 문자열을 구문 분석하고 다음과 같은 AddWithValue 사용할 수 있습니다 : 당신이 필요로하는 것은 prefer_date이 성공적으로 DateTime.Parse에 의해 해석 될 수있는 값을 포함 고려

cmd.Parameters.AddWithValue("@PreferredDateStart",DateTime.Parse(prefer_date)); 

합니다. 당신은 SQL에서 같은 것을 할 경우

+0

나는 첫번째 것을 시도하고 나는 아직도 오류를 얻고있다. 두 번째 구문은 잘못된 것 같습니다. {Value = prfer_date); – moe

+0

@moe 거기에'}'이 없습니다. – Claies

+0

@moe,'prefer_date'는 이미 문자열임을 알게되었습니다. 당신은'AddWithValue'와 함께 사용될'DateTime' 객체를 파싱 할 필요가 있습니다. 구문 문제를 해결했습니다. 지금 시도하십시오. – Habib

0

SQL 날짜 시간은 범위가 "12 월 31 일을 통해 1753년 1월 1일을, 9999"

: 그럼

select convert(datetime, '1665-01-01 00:00:00') 

당신이 오류를 얻을 :

The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.

관련 문제