Фильтр BindingSource по дате

Вот простая средняя статья, в которой описывается сундук с редуксом. https://medium.com/@tkssharma/understanding-redux-react-in-easiest-way-part-1-81f3209fc0e5

Использовать redux-saga в качестве промежуточного программного обеспечения и использовать генератор функционировать новое будущее в es6

5
задан Janis Veinbergs 30 December 2008 в 13:49
поделиться

5 ответов

Функция getSqlDate не нужна. Можно использовать Строку. Формат () на даты формата:

String.Format("{0:yyyy-MM-dd} 00:00:00", myDateTime)

ИЛИ

myDateTime.Date.ToString("yyyy-MM-dd") + " 00:00:00"

Вы могли отфильтровать обязательный источник как это:

myBindingSource.Filter = String.Format("myDateField >= '{0:yyyy-MM-dd}' AND myDateField < '{1:yyyy-MM-dd}'", myDateTime, myDateTime.AddDays(1));
13
ответ дан 18 December 2019 в 10:49
поделиться

Действительно ли myDateField является названием поля в наборе данных? Я думаю, что Вы хотите выражение как это:

myBindingSource.Filter = "myDateField = " & myDateTime.Date.ToString()
0
ответ дан 18 December 2019 в 10:49
поделиться

Спасибо Tom H.

Да, я хотел устранить часть времени даты и времени в фильтре, и Ваше предложение работает отлично.

Я оставлю полное решение для других:

myBindingSource.Filter = "myDateField >= '" + getSqlDate(myDateTime) + "' AND myDateField < '" + getSqlDate(myDateTime.AddDays(1)) + "'";

где функция getSqlDate:

string getSqlDate(DateTime date) {
    string year = "" + date.Year;
    string month = (date.Month < 10) ? "0" + date.Month : "" + date.Month;
    string day = (date.Day < 10) ? "0" + date.Day : "" + date.Day;

    return year + "-" + month + "-" + day + " 00:00:00";
}
2
ответ дан 18 December 2019 в 10:49
поделиться

Вы спрашиваете, как устранить часть времени даты и времени в фильтре? Я не слишком знаком с MySQL, но если Вы будете использовать какой-либо вид функции, которая возвращает часть даты даты и времени затем, то Вы, вероятно, уничтожите любой шанс использования индекса на том столбце для запроса (существующий или будущий индекс).

Ваш лучший выбор состоит в том, чтобы создать фильтр на фронтэнде, который проверяет на диапазон, который является только для Вашей данной даты фильтра. Например:

myBindingSource.Filter = "myDateField >= " & <code to create a string representing 12AM of your date> &
" myDateField < " & <code to create a string for 12AM of the next day>

Извините за не наличие точного кода, но я - разработчик SQL, и мое отсутствие навыков VB/C# потребовало бы, чтобы я занял намного больше времени для предложения функций затем, это, вероятно, возьмет Вас.:)

0
ответ дан 18 December 2019 в 10:49
поделиться

Исправление к ответу: Согласно msdn , чтобы получить правильную дату мм в

yyyy-mm-dd

должно быть написано с заглавной буквы. вот так:

yyyy-MM-dd

для получения даты в правильном формате.

1
ответ дан 18 December 2019 в 10:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: