2012-06-15 2 views
0

나는 gridview 및 sqldatasource 있습니다.데이터베이스 날짜에 다른 형식으로 삽입

데이터베이스에 새 레코드를 삽입하려고하는데 날짜 열 유형이 날짜이고 기본 형식은 미국, mm/dd/yyyy이며 다른 형식으로 날짜를 삽입하려고합니다.

SqlDataSource2.InsertCommand = "Insert into test (Name,Date) VALUES (@Name,@CONVERT(Date,'@Date',104))"; 
     SqlDataSource2.InsertParameters.Add("Name", nameText); 
     SqlDataSource2.InsertParameters.Add("Date", DbType.DateTime, date.Text); 

가져 오기 : String이 유효한 DateTime으로 인식되지 않습니다. 데이터 유형이 SQLServer에 테이블에 datatime 경우 삽입하는 동안

감사

+0

'date' (및'datetime','datetime2' 등) 열은 * 형식을 갖지 않습니다. 그들은 단지 날짜 (및 시간)를 저장합니다. 문자열을 매개 변수로 추가하기 전에 문자열을 'DateTime'으로 변환하고 ADO.NET 및 SQL Server에서 처리하도록하십시오. –

+0

예 .. 그랬지만 insertt는 datetime 값을 허용하지 않습니다. 문자열로 변환하고 추가해야합니까? – Jax

+0

* 아니요 *, 이것을 문자열로 처리하지 않겠습니다. –

답변

4

의 데이터베이스에서 불가지론 형식의 날짜 유형 (당신이 문자열로 저장하지 않는 한) 데이터를 검색하는 동안

"Insert into test (Name,Date) VALUES (@Name, @Date)"; 

당신은 날짜 시간 형식을해야한다.

DateTime.ParseExact 또는 DateTime.Parse을 사용하여 유효한 System.DateTime 개체를 먼저 가져올 수 있습니다.

그런 다음이 값으로 SqlParameter를 설정하십시오.

DateTime dateValue = DateTime.Parse(date.Text); // try to make this working first. 
SqlDataSource2.InsertCommand= "Insert into test (Name,Date) VALUES (@Name,@Date)"; 
    SqlDataSource2.InsertParameters.Add("Name", nameText); 
    SqlDataSource2.InsertParameters.Add("Date", DbType.DateTime, dateValue); 
+0

Ups my bad ... Insert 명령 대신 Selectcommand를 사용했습니다 : D – Jax

+1

응용 프로그램 수준에서 올바른 개체 형식을 준비하라는 조언은 여전히 ​​유효합니다. 훨씬 더 유지 보수가 가능할 것이며, db 드라이버는 그것이 무엇인지를 구축하도록 할 것입니다. –

2

먼저 당신이 먼저 DateTime

둘째로 텍스트를 변환하는 대신 Date.TextDateTime 객체를 사용해야합니다 당신은 날짜 시간을 포맷 할 필요는 없습니다 그냥 사용하십시오. select

+0

yes로 재배치했습니다. 그러나 mm/dd 만 허용하므로 예제 30/02/2012는 삽입하지 않습니다./yyyy – Jax

+0

@Jax T-SQL DateTime 형식이 작동하지 않습니다. – tomfanning

관련 문제