vb.net с mysql, как выбирать между датами разных лет?

У меня есть программа vb.net, которая запрашивает базу данных MySQL. я могу искать и получать записи между датами с этим кодом:

sqlQRY12 = "SELECT * from mating WHERE date BETWEEN '" & export_daily_date_DateTimePicker1.Text & "' AND '" & export_daily_date_DateTimePicker2.Text & "' AND chkbox = '0' ORDER BY lot_id ASC"

мой формат для моей даты:

        export_daily_date_DateTimePicker1.Format = DateTimePickerFormat.Custom
    export_daily_date_DateTimePicker1.CustomFormat = "MM/dd/yy"

    export_daily_date_DateTimePicker2.Format = DateTimePickerFormat.Custom
    export_daily_date_DateTimePicker2.CustomFormat = "MM/dd/yy"

однако, если я попытаюсь выполнить поиск между двумя годами, например, 20.12.13 - 20.02.14, я не верну никаких записей, когда узнаю, что они существуют? Любая помощь будет отличной

2 ответа

Решение

Обычно даты, выраженные в виде строк в запросах к базе данных, должны иметь формат "ГГГГ-ММ-ДД".

По сути, вы хотите, чтобы ваш выполненный запрос был таким:

SELECT * from mating
WHERE date BETWEEN '2013-12-20' AND '2014-02-20'

Поэтому измените формат ваших dtpickers на yyyy-mm-dd следующим образом:

export_daily_date_DateTimePicker1.Format = DateTimePickerFormat.Custom
export_daily_date_DateTimePicker1.CustomFormat = "yyyy-MM-dd"

export_daily_date_DateTimePicker2.Format = DateTimePickerFormat.Custom
export_daily_date_DateTimePicker2.CustomFormat = "yyyy-MM-dd"

Вы никогда не должны объединять значения в ваши команды SQL. Если это вообще возможно, вы должны использовать параметры. С помощью параметров вы можете указать значение как фактический тип (Date), а не как строковое представление. Поставщик ADO будет обрабатывать преобразование значения правильно для вас.

cmd.CommandText = "SELECT * from mating WHERE date BETWEEN @date1 AND @date2 AND chkbox = '0' ORDER BY lot_id ASC"
cmd.Parameters.AddWithValue("@date1", export_daily_date_DateTimePicker2.Value)
cmd.Parameters.AddWithValue("@date2", export_daily_date_DateTimePicker2.Value)
Другие вопросы по тегам