mysql - 如何使用 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
。
我怎样才能做到这一点?
使用我的代码,我可以在准确的时间为他服务,但我需要一个范围之类的东西。
解决方案
我相信你正在寻找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 语句的最佳方法,这里似乎有些混乱。或者,您也可以只检查Time_Serve
字段 ifDate_Serve
也是查询的参数
推荐阅读
- python - 特定数量的网格点的 matplotlib 流图错误
- c# - 在主类的子类列表值中设置子项
- javascript - FCM 推送通知在本地工作,但不在服务器上
- java - 验证后续模式并将花括号内的任何内容作为字符串获取的 Java 正则表达式将是什么?abc12={p,q}
- ruby-on-rails - rabbitMQ(bunny gem) + sidekiq 在 heroku 中无法用于 ruby 应用程序
- html - 如何限制 CSS Grid 的行大小?
- assembly - masm32 sdk 中的链接错误
- mysql - 从两个表中选择姓氏名字和平均工资按姓氏降序排列
- ios - iOS 通知自定义操作(按钮)——无 GUI 时处理错误的最佳实践
- javascript - 当文件输入有值时更改标签 CSS