DateTime
s не имеют формата, они похожи на числа (например, например, 1000 можно отформатировать как 1000.0 или 1x10 ^ 3 и т. Д. c, но это все равно всего тысяча).
Вы просто пишете запрос как:
SELECT * FROM t WHERE dateCol BETWEEN @fromDate AND @toDate
Примечание: вы не ставите '
вокруг имен параметров!
И в вызове dapper вы помещаете datetime набранные параметры:
DateTime x = DateTime.Now.AddDays(-1);
DateTime y = DateTime.Now;
dbConnection.Query<Result>(query, new { fromDate = x, toDate = y});
Если в вашей базе данных вы сделали столбцы даты и времени varchar и заполнили их строками, это первое, что вы должны исправить (сделать их правильным типом даты) ..
Но даже если бы вы сделали это, совет не изменился бы:
DateTime x = DateTime.Now.AddDays(-1);
DateTime y = DateTime.Now;
dbConnection.Query<Result>(
"SELECT * FROM t WHERE dateCol BETWEEN @fromDate AND @toDate",
new {
fromDate = x.ToString("yyyy-MM-dd HH:mm:ss"),
toDate = y.ToString("yyyy-MM-dd HH:mm:ss")
}
);
Вы все еще записываете параметры в свой SQL, теперь вы помещаете отформатированные строки в значения параметров соответствовать форматированным строкам в таблице БД. Не делайте этого, если ваша таблица содержит столбцы типа DATE / TIME / TIMESTAMP - это только в том случае, если вы организовали сомнительную (fooli sh) _ ситуацию хранения дат в виде строк и не хотите их менять (вы нужно)