dlnzki Ответов: 2

Как кодировать отображение между двумя датами


Привет, я хочу отобразить информацию из базы данных, используя указанную дату. я хочу указать, что информация находится между двумя датами, указанными в представлении

но я получаю ошибку в запросе, говоря, что
"Оператор '>=' не может быть применен к операндам типа 'TimeSpan?' и 'DateTime'"

datestart и dateend находятся в форме ввода

Что я уже пробовал:

var query2 = (from c in db.Information
                            where c.Time_start >= DateStart && c.Time_start <= DateEnd
                            select new DetailBundle
                            {
                                Time_start = c.Time_Start
                            }).ToList();
            ViewBag.datepick = query2;

2 Ответов

Рейтинг:
20

OriginalGriff

Вы не можете сравнивать промежуток времени и дату - время-это все равно что пытаться вычислить размер яйца и теорию относительности.

Поэтому проверьте типы Time_start (который, вероятно, является TimeSpan?) и DateStart (который, как я подозреваю, является DateTime) - и либо преобразуйте Timespan в DateTime, либо наоборот.

То, что вы выбрали, будет зависеть от того, что вы пытаетесь сделать, и мы этого не знаем - если DateStart и DateEnd не являются одним и тем же днем, то у вас есть проблема, поскольку временной интервал не имеет "фиксированной начальной точки", и вы вообще не можете сказать, что он находится между двумя датами.
Подумайте об этом: "09:00" между 1 февраля 1990 года и 3 августа 2021 года? Он появляется один раз в день, но это не очень полезно ...


dlnzki

Дата-время берется из формы ввода. я уже изменил тип данных, и это работает. Спасибо!

OriginalGriff

Всегда пожалуйста!

Рейтинг:
10

Richard MacCutchan

where c.Time_start >= DateStart

Эти два операнда являются различными типами, как ясно отмечено в сообщении об ошибке. Вам нужно изменить один из них, чтобы они были одинаковыми, как типы DateTime, так и TimeSpan.