Установите DateTime в 11:59:59 PM

93
14

У нас есть приложение, которое позволяет пользователям получать данные между двумя датами. Эти даты находятся в элементе управления "Дата", и если пользователь хочет выбрать данные за один день, они будут вводиться в тот же день в обоих элементах управления.

Это вызовет проблему, потому что значение .Value этих элементов управления установлено на полночь, 12:00 AM. Поэтому он попытается найти данные с 12:00 AM до 12:00 AM того же дня.

Например,

DateTime start = fromDate.Value; // 09-07-2018 12:00 AM
DateTime end = toDate.Value; // 09-07-2018 12:00 AM

Позже мы будем называть базу данных, где start :start и end :end.

SELECT * FROM Table WHERE Date BETWEEN :start AND :end;

Этот запрос ничего не вернет, поскольку между полуночью и полночью ничего не происходит.

Как мы положим end 23:59:59 или 11:59:59 PM?

спросил(а) 2018-09-08T00:13:00+03:00 2 года, 1 месяц назад
1
Решение
81

Вы должны просто использовать

DateTime end = toDate.Value.AddDays(1);

Это даст вам полночь следующего дня, так что все, что меньше, чем в предыдущий день.

ответил(а) 2018-09-08T00:16:00+03:00 2 года, 1 месяц назад
58

Вам нужно использовать следующий код:


DateTime end = toDate.Value.AddDays(1).AddSeconds(-1);

ответил(а) 2018-09-08T00:20:00+03:00 2 года, 1 месяц назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема