(管理スタジオから) SQL データベースで次のスクリプトを実行すると、期待どおりの結果が得られます。
SELECT *
FROM [Case]
WHERE ABS((DATEDIFF(DAY, [DateAccident], '2013-01-01'))) < 100;
値 100 を増減すると、期待どおりに一致する数が増えたり減ったりします。
ただし、WinForms アプリ (C#) から同じ結果を生成しようとすると、必要以上の結果が得られます -
public static DataTable DOACases(DateTime doa, int days)
{
try
{
DataTable table = new DataTable();
string sqlText = "SELECT * " +
"FROM [Case] " +
"WHERE ABS((DATEDIFF(DAY, [DateAccident], " + doa.ToString().Substring(0,10) + "))) < " + days.ToString() + ";";
SqlCommand sqlCom = new SqlCommand(sqlText);
table = Express.GetTable(sqlCom);
return table;
}
catch (Exception eX)
{
throw new Exception("Case: DOACases(Date)" + Environment.NewLine + eX.Message);
}
}
何故かはわからない
PS。Express.GetTable(sqlCom) は、データベースへの接続と、DataReader を使用して DataTable を埋めるために必要なコードを作成するだけで、何百回も機能しているので、問題があるとは思えません。