DB의 어떤 테이블의 컬럼 타입이 datetime 타입이 있다. 쿼리문을 문자열로 작성한 뒤 SqlDataAdapter, SqlCommand 클래스를 이용해 쿼리문을 실행시킬 경우가 있다. int 타입, byte 타입, nvarchar 타입 관련해서는 쉽게 쿼리문을 문자열로 작성할 수 있지만 컬럼 타입이 datetime 이면 생각처럼 쉽지가 않았다. 시간의 표현 범위와 다른 나라들의 시간 표현 순서도 다르고.
이 경우 SqlParameter 클래스를 이용하면 쉽게 해결 가능하다.
DateTime MyDate = new DateTime(1997, 9, 12);
SqlDataAdapter adapter = new SqlDataAdapter("select * from orders where OrderDate=@mydate",
"server=pedro4;database=Northwind");
SqlParameter myParam = new SqlParameter();
myParam.ParameterName = "@mydate";
myParam.SqlDbType = SqlDbType.DateTime;
myParam.Value = MyDate;
adapter.SelectCommand.Parameters.Add(myParam);
DataSet ds = new DataSet();
adapter.Fill(ds);
Console.WriteLine(ds.Tables[0].Rows.Count.ToString());
Console.ReadLine();