我在我的项目中遇到了一个问题,我传递了09/03/2013 23:59:59
存储过程的日期,但在 profiler .net 中看到将其转换为09/04/2013 00:00:00
.
为了确认我创建了一个小型测试应用程序(任何人都可以使用它来复制,我使用的是 .Net 4.5 和 Sql server 2012 express edition)。
下面是测试代码:
DateTime startdate = DateTime.Parse("09/03/2013");
DateTime endDate = startdate.AddDays(1).AddTicks(-1);
try
{
using (SqlConnection konekcija = new SqlConnection(ConfigurationManager.ConnectionStrings["default"].ToString()))
{
konekcija.Open();
using (SqlCommand cmd = new SqlCommand())
{
cmd.Connection = konekcija;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "[Interface].[uspTestDateParameter]";
cmd.Parameters.AddWithValue("@CurrentDate", startdate);
cmd.Parameters.AddWithValue("@BatchEndDate", endDate);
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
// Fill the DataSet using default values for DataTable names, etc
DataSet dataset = new DataSet();
da.Fill(dataset);
DataTable dt = dataset.Tables[0];
//return dataset;
}
}
}
}
catch (Exception ee)
{
}
以下是程序:
CREATE PROCEDURE [Interface].[uspTestDateParameter]
(
@CurrentDate DateTime
,@BatchEndDate DateTime
)
AS
BEGIN
Declare @table table (strt Datetime ,endT Datetime )
Insert into @table values (@CurrentDate,@BatchEndDate)
Select * from @table
END
返回的结果集是9/3/2013 12:00:00 AM 9/4/2013 12:00:00 AM
我可以附上数据集可视化工具的屏幕截图,但不能这样做,因为它需要声誉 10。但上面是我得到的两列(strt,enDt)的值。
有人可以帮忙吗?由于这个原因,我的 procs 在生产中失败了。