0

asp ページで使用されるリーダーを実行すると、次のエラーが発生します。

SqlDateTime オーバーフロー。1753 年 1 月 1 日 12:00:00 AM から 9999 年 12 月 31 日 11:59:59 PM の間である必要があります。

日付はカレンダーから選択され、DateTime変数に設定され、SQL コマンドのパラメーターとして使用されます。ランダムに機能するようです。日付を 1 回選択すると機能し、ページをリロードして同じ日を選択すると機能しない場合があります。

私の相対コードは以下のとおりです.ExecuteReader()。行でエラーが発生しています。confirmedDateリーダーが実行される直前に変数をチェックしましたが、有効なDateTime.

    DateTime confirmedDate = DateTime.Parse(dateSelected);
    SqlCommand command4 = new SqlCommand();
    command4.Connection = gconn;
    String sql4 = "SELECT MAX([Day]) as TheDay FROM Days WHERE User_ID = @User_ID AND [Day] < @dateSelected AND NOT EXISTS (SELECT 1 FROM Days WHERE User_ID = @User_ID AND [DAY] >= @dateSelected)";
    command4.CommandText = sql4;
    command4.Parameters.Add(new SqlParameter("@User_ID", ""));
    command4.Parameters.Add(new SqlParameter("@dateSelected", confirmedDate));


for (int i = 0; i < firstName.Count; i++ )
{
    command4.Parameters["@User_ID"].Value = userID[i];

    using (SqlDataReader reader = command4.ExecuteReader()) //error here
    {
        while (reader.Read())
        {
            if (reader.HasRows)
            {
                if (reader["TheDay"].ToString() == "") 
                {
                    dates.Add("NULL"); 
                }
                else
                {
                    dates.Add(reader["TheDay"].ToString());
                }
            }
        }
    }
}   

これに関する他の質問を調べましたが、うまくいく解決策が見つかりません。常に有効なDateTime値が渡されます。

4

2 に答える 2