我從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類型的參數,爲什麼你將完美適合的日期時間變量轉換爲字符串? – Steve
我害怕C#和SQL Server之間的日期時間格式不匹配,所以我試圖通過toString方法來管理格式。 –