-5

C#デバッグで実行すると、SQLの範囲外の値に問題があります。ただし、選択と日時の変換は、SQLで直接機能します。私に何ができる..?

WHERE (Edu_Table_1.chatardeba = CONVERT(DATETIME, '" + datesList[dd] + "', 103)) 

...

List<DateTime> datesList = new List<DateTime>();
DataTable dt1 = DataObjects.FetchFromDatabase(String.Format("SELECT date from dates_table", magalkurseli, examType), this.serverAddress, this.dbCatalog); 
if (dt1 != null && dt1.Rows.Count > 0) 
{ 
    foreach (DataRow dr in dt1.Rows) 
    {
        datesList.Add(Convert.ToDateTime(dr["tarigi"])); 
    } 
} 
4

2 に答える 2

2

ここで取り上げる情報は多くありませんが、他の開発者が遭遇した問題に基づいて、何が起こっているのか推測できます...

.NETのオブジェクトの既定値が、SQLDateTimeのデータ型の有効な範囲内にありません。これは通常、有効な値に初期化しない (または に設定しない) datetimenull 非許容のプロパティまたはパラメーターがある場合に発生します。DateTimedefault(DateTime)

解決策は、通常、null 許容列をDateTime?関連する c# オブジェクトで使用するDateTime、SQL が期待する範囲内の値に常にプロパティを初期化することです。

于 2013-03-12T22:45:06.647 に答える
1

これは簡単に修正できる問題です。これは、データベースの形式が.Net datetime fromat(日を月として送信する場合があります)とは異なるために発生します。必要なのは次のとおりです。

  • SQL Management Studioを開き、「select GETDATE()」を実行すると、データベースの日時形式が返されます。
  • データベースに日付を送受信するときは、必ず同じデータベース形式に変更してください。

    //例、データベースの日時は2013年3月13日です// .Net Dateオブジェクトの形式を変更しますdt.toString( "dd-MM-yyyy");

于 2013-03-12T22:56:59.353 に答える