C#ASP.NETアプリケーション(MVC 3)からSQL Server 2014ストアドプロシージャを実行しているときに問題が発生しています。 同じパラメータでこの手順を手動で実行すると、すべて適切な結果が返されます。プロシージャがC#アプリケーションから実行されると、 "reader"は何もデータなしで空になります。これはDateTime形式の問題です。それを解決するために私は何をすべきですか?ここ はコードです:StoredProcedureのDateTime形式の問題 - C#ASP.NET x MS SQL Server 2014
SQL:
ALTER PROCEDURE [dbo].[my_proc]
(
@client_code AS varchar(7),
@begin_date AS datetime,
@end_date AS datetime
)
AS
BEGIN
SET NOCOUNT ON;
SELECT *
from [dbo].[my_table] c
WHERE c.code = @client_code
AND c.date1 >= @begin_date
AND c.date2 <= @end_date
END
のC#:
DateTime Today = DateTime.Today;
DateTime LastYear = Today.AddYears(-1);
sql = new SqlConnection(/*my string connection*/);
sql.Open();
adapter.SelectCommand = new SqlCommand();
adapter.SelectCommand.CommandText = "dbo.my_proc";
adapter.SelectCommand.Connection = sql;
adapter.SelectCommand.CommandType = CommandType.StoredProcedure;
param1 = adapter.SelectCommand.Parameters.Add("@client_code", SqlDbType.VarChar);
param1.Value = cod_client;
param2 = adapter.SelectCommand.Parameters.Add("@begin_date", SqlDbType.Date);
param2.Value = LastYear.ToString("yyyy-MM-dd");
param3 = adapter.SelectCommand.Parameters.Add("@end_date", SqlDbType.Date);
param3.Value = Today.ToString("yyyy-MM-dd");
reader = adapter.SelectCommand.ExecuteReader();
'.ToString( "...")'?いいえ、問題があります。 'SqlDbType.DateTime'を使い、時刻部分を削除したい場合は' Today.Date'を使います。 –
DateTime型のパラメータが期待されますが、完璧なdatetime変数を文字列に変換するのはなぜですか? – Steve
C#とSQL Serverの日時フォーマットの不一致を恐れていたので、toStringメソッドでフォーマットを管理しようとしました。 –