Я пытаюсь передать DateTime в c # в хранимую процедуру сервера SQL, однако к одной из дат добавляется 1 секунда, то есть toDate.Для fromDate время - 01.07.2017, 12:00:00, для toDate - 31.07.2017, 23:59:59.Однако, когда дело доходит до профилировщика SQL-сервера, я обнаружил, что toDate изменяется на 2017-08-01 00:00:00.
Ниже приведен мой код C #, по которому 31.07.2017 23:59:59 PM передается toDate
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
using (SqlCommand cmd = new SqlCommand("SelectUsage4", conn))
{
SqlParameter param = null;
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandTimeout = 600;
param = cmd.Parameters.AddWithValue(ConvertToParam("ids"), ids ?? (object)DBNull.Value);
param.Direction = ParameterDirection.Input;
param.DbType = DbType.String;
param = cmd.Parameters.AddWithValue(ConvertToParam("locationIDs"), locationIDs ?? (object)DBNull.Value);
param.Direction = ParameterDirection.Input;
param.DbType = DbType.String;
param = cmd.Parameters.AddWithValue(ConvertToParam("indicatorIDs"), indicatorIDs ?? (object)DBNull.Value);
param.Direction = ParameterDirection.Input;
param.DbType = DbType.String;
param = cmd.Parameters.AddWithValue(ConvertToParam("fromDate"), fromDate ?? (object)DBNull.Value);
param.Direction = ParameterDirection.Input;
param.DbType = DbType.DateTime;
param = cmd.Parameters.AddWithValue(ConvertToParam("toDate"), toDate ?? (object)DBNull.Value);
param.Direction = ParameterDirection.Input;
А вот SQL Server Profiler, вы можете увидетьвремя изменяется на 2018-08-01 00:00:00, передавая @ p_todate
exec SelectUsage4 @p_ids=NULL,@p_locationIDs=N'6,7,8',@p_indicatorIDs=N'94',@p_fromDate='2017-07-01 00:00:00',@p_toDate='2017-08-01 00:00:00',@p_yearly=NULL,@p_monthly=NULL,@p_halfYear1=NULL,@p_halfYear2=NULL,@p_fourMonths1=NULL,@p_fourMonths2=NULL,@p_fourMonths3=NULL,@p_q1=NULL,@p_q2=NULL,@p_q3=NULL,@p_q4=NULL,@p_biMonthly1=NULL,@p_biMonthly2=NULL,@p_biMonthly3=NULL,@p_biMonthly4=NULL,@p_biMonthly5=NULL,@p_biMonthly6=NULL,@p_approvalStatus=NULL,@p_LANGUAGE=N'en-US'
А вот и объявление хранимой процедуры.
ALTER PROCEDURE [dbo].[SelectUsage4](
@p_ids VARCHAR(max)
, @p_locationIDs VARCHAR(max)
, @p_indicatorIDs VARCHAR(max)
, @p_fromDate datetime
, @p_toDate datetime
, @p_yearly smallint
, @p_monthly smallint
, @p_halfYear1 smallint
, @p_halfYear2 smallint
, @p_fourMonths1 smallint
, @p_fourMonths2 smallint
, @p_fourMonths3 smallint
, @p_q1 smallint
, @p_q2 smallint
, @p_q3 smallint
, @p_q4 smallint
, @p_biMonthly1 smallint
, @p_biMonthly2 smallint
, @p_biMonthly3 smallint
, @p_biMonthly4 smallint
, @p_biMonthly5 smallint
, @p_biMonthly6 smallint
, @p_approvalStatus int
, @p_language nvarchar(10)
)
Я не совсем понимаю, почему 1 секунда добавляется к toDate с C # на сервер SQL.