Вызов хранимой процедуры из c # с датой в параметрах - PullRequest
0 голосов
/ 24 октября 2018

Мне нужно вызвать хранимую процедуру из C # с двумя датами в качестве параметров.Я делал это много раз, но никогда с датами, и это не работает, параметры не интерпретируются.

Моя дата похожа на "2018-01-30"

Моя функция C #:

private DataTable getAccidents ( DateTime dateDebut, DateTime dateFin)
{
    DataTable dt = new DataTable();
    string connectionString = ConfigurationManager.ConnectionStrings["ATPConnectionString"].ConnectionString;

    using (SqlConnection cn = new SqlConnection(connectionString))
    {
        SqlCommand cmd = new SqlCommand("getAccidents", cn);
        cmd.CommandType = CommandType.StoredProcedure;

        cmd.Parameters.Add("@p_anneeDebut", SqlDbType.DateTime).Value = dateDebut;
        cmd.Parameters.Add("@p_anneeFin", SqlDbType.DateTime).Value = dateFin;

        SqlDataAdapter adp = new SqlDataAdapter(cmd);
        adp.Fill(dt);
    }

    return dt;
}

И моя хранимая процедура в SQL Server выглядит следующим образом:

ALTER PROCEDURE [dbo].[getAccidents]
    (@p_anneeDebut DATETIME, 
     @p_anneeFin DATETIME)
AS
    SELECT * 
    FROM T_ACCIDENT
    LEFT OUTER JOIN TR_SALARIE AS victime ON T_ACCIDENT.SAL_idVictime = 
victime.SAL_id
    ...
    LEFT OUTER JOIN ERP.dbo.TR_COST_CENTER as cost_center ON cost_center.COS_id = T_ACCIDENT.ACC_lieuPrecis
    WHERE 
        CONVERT(DATETIME, ACC_date) BETWEEN @p_anneeDebut AND @p_anneeFin

Для информации ACC_date - это строковый столбец, поэтому я преобразую его в DATETIME.Когда я вызываю хранимую процедуру в SQL Server без параметра, но с датой типа «МЕЖДУ« 2017-01-01 »И« 2018-01-01 »», она работает

...