如何使用MySQL表与时间范围进行比较

时间:2018-11-17 09:19:13

标签: mysql vb.net

我的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

我想做的是花些时间使距time_serve的时间延迟15分钟。
例如,如果时间为10:00:00 AM,则需要以10 AM的价格为他服务​​,直到10:15 AM
我该如何实现?

使用我的代码,我可以在准确的时间为他服务,但是我需要范围之类的东西。

1 个答案:

答案 0 :(得分:0)

我相信您正在寻找BETWEEN

您可能会问,在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语句的最佳方法,似乎有些confusion here。另外,如果Time_Serve还是查询的参数,您也可以只在Date_Serve字段之间进行检查