C# Pass date parameters to MySQL stored procedure returns null

61 Views Asked by At

I am stuck with the simple select operation with date parameters. I have records persisted in the database with InsertDate field (which is timestamp data type). I am simply trying to get between two dates. There is no timezone difference in the dates so that is not the problem.

using (MySqlConnection conn = new MySqlConnection(cnstr))
using (MySqlCommand cmd = new MySqlCommand("sp_kpis", conn))
{
    cmd.CommandType = System.Data.CommandType.StoredProcedure;

    cmd.Parameters.Add(new MySqlParameter() { DbType = System.Data.DbType.DateTime, ParameterName = "start_date", Value = startDate });
    cmd.Parameters.Add(new MySqlParameter() { DbType = System.Data.DbType.DateTime, ParameterName = "end_date", Value = endDate });
    cmd.Parameters.Add(new MySqlParameter() { DbType = System.Data.DbType.String, ParameterName = "period", Value = period });

    await conn.OpenAsync();
    DbDataReader dr = await cmd.ExecuteReaderAsync();
    double result = 0;
    while (dr.Read())
    {
        result = dr.GetDouble(0);
    }
    return result.ToString();
}

This query returns null:

select SUM(VALUE) as returnValue
from rawkpicalculations
where INSERTDATE between start_date AND end_date;

However query returns result like this:

select SUM(VALUE)
from rawkpicalculations
where INSERTDATE between '2024-02-01 00:39:00' AND '2024-02-19 01:39:00'

And the procedure is:

CREATE DEFINER=`al_user`@`111.111.111.111` PROCEDURE `sp_kpis`(in start_date date, in end_date date, in period varchar(5))
BEGIN
    select SUM(VALUE) as returnValue from rawkpicalculations where INSERTDATE between start_date AND end_date;
END

Also when I set parameters like '2024-01-19 01:39:00' between '2024-02-19 01:39:00', the query works but result is not correct.

What am I missing?

0

There are 0 best solutions below