Как сравнить временной диапазон с таблицей MySQL

У меня есть эта таблица в моей базе данных MySQL:

   ID   First_Name  Date_Serve     Time_Serve   RFID_Tag    Amount_Serve
   --------------------------------------------------------------
    1     John      17-11-2018      10:00:00    hdgdYun8JH   Small
    2     George    18-11-2018      11:00:00    kdjfHluhHB    Big

и иметь этот код для запроса MySQL:

Private Sub TextBox3_TextChanged(sender As Object, e As EventArgs) Handles TextBox3.TextChanged
    Dim str As String = "Server=localhost;Port=3306;Database=testdb;Uid=root;Pwd=password123"

    Using con As New MySqlConnection(str)
        Dim query As String = 
            "select * from testdata where rfid_tag='" & TextBox3.Text & 
            "' and Date_Serve= '" & Date.Now.ToString("yyyy-MM-dd ") & 
            "' and Time_Serve= '" & Date.Now.ToString("HH:mm:ss ") & 
            "' or amount_serve=''"

        Dim cm As New MySqlCommand(query, con)
        con.Open()

        Dim rd As MySqlDataReader = cm.ExecuteReader()

        ' Check if any rows exist
        If rd.Read() Then
            If rd.GetString(3) = "small" Then
                MessageBox.Show("small")
            ElseIf rd.GetString(3) = "Big" Then
                MessageBox.Show("big")
            ElseIf rd.GetString(3) = "Midium" Then
                MessageBox.Show("Mid")
            End If
        End If
    End Using
End Sub

Что я хочу сделать, так это со временем сделать 15-минутную задержку с time_serve.
. Например, если время 10:00:00 AM, необходимо подать ему его сумму в 10 AM до 10:15 AM.
. Как я могу этого добиться?

С моим кодом я могу обслуживать его в точное время, но мне нужно что-то вроде диапазона.

может помочь что-нибудь вроде ADD_DATE? w3schools.com/sql/func_mysql_date_add.asp

petrch 17.11.2018 12:32
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
1
44
1

Ответы 1

Я считаю, что вы ищете МЕЖДУ

Там вы можете спросить, есть ли определенная временная ставка между time_serve и дополнительным временем, которое вы выделили

Тогда это, вероятно, будет примерно так:

SELECT * FROM testdata 
         WHERE @0 BETWEEN TIMESTAMP( Date_Serve, Time_Serve ) 
               AND DATE_ADD( TIMESTAMP( Date_Serve, Time_Serve), INTERVAL 15 MINUTE ) )

Где @0 будет аргументом для текущей даты и времени, который вы можете добавить в свой запрос. Из того, что видно из вашего кода, вы не должны просто использовать конкатенацию строк для создания самой строки запроса, просто посмотрите MySqlParamater и то, как вы можете использовать их в своем запросе (но я знаю, что это не часть вопроса)

Обратите внимание, что я не уверен, что лучше всего преобразовать ваши столбцы даты и времени в оператор DATETIME, похоже, есть путаница здесь. В качестве альтернативы вы также можете просто проверить поле Time_Serve, если Date_Serve также является аргументом вашего запроса.

Я сделал так, как будто этот формат бу не работал Dim query As String = "select * from testdata where getdate() BETWEEN TIMESTAMP(Time_Serve ) and rfid_tag='" & TextBox3.Text & "' and Date_Serve= '" & Date.Now.ToString("yyyy-MM-dd ") & "' and DATE_ADD( TIMESTAMP(Time_Serve), INTERVAL 10 MINUTE) or spring_size='' "

Mohammad Khaled 17.11.2018 19:29

@MohammadKhaled, но ваш запрос неверен, между ними предшествует одно выражение, за которым следуют начало и конец (поэтому 2 аргумента разделены AND), проверьте ссылку, которую я предоставил с ним. Ваша запись rfid не имеет ничего общего с time_serve

Icepickle 17.11.2018 19:31

Другие вопросы по теме