Мне нужно вызвать хранимую процедуру из 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 »», она работает