Поиск данных по дате — ошибка

#sql #vb.net #ms-access

#sql #vb.net #ms-access

Вопрос:

Я использую свой VB.Сетевая программа для запроса базы данных в MS Access. В базе данных у меня есть таблица, содержащая поле «question_start» (Дата / время).

Я хотел бы вернуть идентификаторы каждой записи, которые происходят в дату или после даты, которую я выбираю в своей программе VB.

Данные в таблице Access хранятся как дата / время в общем формате даты (например ’10/10/2016 15:48:01′).

В VB.NEt Я использую объект DateTimePicker для выбора даты.

Ниже приведен код, который я использую для возврата всех записей, имеющих начальную дату 10/10/2016 (10 октября 2016).

(Примечание 1: я удалил элемент time из этого конкретного поиска, поскольку мне не нужно, чтобы мои результаты зависели от времени здесь, но потребуются позже.)

 Private Sub btnDateText_Click(sender As Object, e As EventArgs) Handles btnDateText.Click

    Dim dt_QuestionDate As New DataTable()

    dt_QuestionDate = getData("SELECT question_id
                    FROM tblQuestion                     
                    WHERE question_start => " amp; dtDateText.Value.ToString("dd-MM-yyyy") amp; ""
                    )

    lstDateText.DataSource = dt_QuestionDate
    lstDateText.DisplayMember = "question_id"
    lstDateText.ValueMember = "question_id"

End Sub
  

** В моей базе данных есть записи, которые должны быть возвращены, но в настоящее время я не получаю никаких значений. Я не уверен, что именно так я написал предложение WHERE (я сделал WHERE с «=>», «>=», а также «=») но я не получаю записи с 10/10/2016.

Есть у кого-нибудь какие-нибудь идеи, пожалуйста? Я не знаю, связано ли это с простой ошибкой или с элементом time, который хранится в Access?

Комментарии:

1. Вам нужен оператор >= . Вы пробовали заключать дату в кавычки вот так: '10-10-2016' ?

2. в предложении where вам, вероятно, нужно изменить question_start на question_start.ToString() , поскольку вы сделали компаратор строкой

3. Меняет ли это на . toString(«дд/ ММ/гггг») поможет?

Ответ №1:

Вам необходимо правильное форматирование строкового выражения для значения даты:

 WHERE question_start => #" amp; dtDateText.Value.ToString("yyyy'/'MM'/'dd") amp; "#"