Mysql vb.net获取两个日期之间的数据库数据
我有两个datetimepicker,startDate是存储的datetimepicker1值,endDate是存储的datetimepicker2值 我想从数据库中获取startDate和endDate之间的数据Mysql vb.net获取两个日期之间的数据库数据,mysql,database,vb.net,datetimepicker,Mysql,Database,Vb.net,Datetimepicker,我有两个datetimepicker,startDate是存储的datetimepicker1值,endDate是存储的datetimepicker2值 我想从数据库中获取startDate和endDate之间的数据 Dim bSql As String = "select date, sum(total_price) from bill where Date = '" & Format(startDate, "yyyy/MM/dd") & " and Date='" &am
Dim bSql As String = "select date, sum(total_price) from bill where Date = '" & Format(startDate, "yyyy/MM/dd") & " and Date='" & Format(endDate, "yyyy/MM/dd") & "'"
我尝试了上面的代码,但它无法工作。任何人都可以帮助我吗?尝试将日期格式化为这样,您还需要使用DateTimePicker的值:
Format(startDate.Value, "yyyy-MM-dd")
更好的选择是使用参数化查询,然后不必将日期格式化为任何特定格式。此处的详细信息:尝试按如下方式格式化日期。您还需要使用DateTimePicker的值:
Format(startDate.Value, "yyyy-MM-dd")
更好的选择是使用参数化查询,然后不必将日期格式化为任何特定格式。此处的详细信息:使用SQLBetween操作符尝试此操作,它允许您指定范围的下限和上限
Dim bSql As String = "select date, sum(total_price) from bill where Date BETWEEN '" & startDate.ToString("yyyy/MM/dd") & "' AND '" & endDate.ToString("yyyy/MM/dd") & "' GROUP BY date;"
您还需要应用分组来使用聚合函数SUM:
-- find all dates with sales and the total prices on each date
SELECT [date], SUM(total_price) AS [TotalPrice]
FROM bill
WHERE [date] BETWEEN '2013-01-01' AND '2013-12-31' -- use appropriate date format here
GROUP BY [date];
尝试使用SQLBetween操作符,它允许您指定范围的下限和上限
Dim bSql As String = "select date, sum(total_price) from bill where Date BETWEEN '" & startDate.ToString("yyyy/MM/dd") & "' AND '" & endDate.ToString("yyyy/MM/dd") & "' GROUP BY date;"
您还需要应用分组来使用聚合函数SUM:
-- find all dates with sales and the total prices on each date
SELECT [date], SUM(total_price) AS [TotalPrice]
FROM bill
WHERE [date] BETWEEN '2013-01-01' AND '2013-12-31' -- use appropriate date format here
GROUP BY [date];
Dim bSql As String=从账单中选择日期、总价,其中日期=&DateTimePicker1.Text&和日期=&DateTimePicker1.Text& 设置日期时间选择器日期格式。
我希望它能对您有所帮助…将bSql设置为字符串=选择日期,从账单中计算总价,其中日期=&DateTimePicker1.Text&和日期=&DateTimePicker1.Text& 设置日期时间选择器日期格式。
我希望它能对你有所帮助……如果你想找到一个日期的字符串格式,你已经输了。试试这个:
Dim bSql As String = "select date, sum(total_price) from bill where Date >= @startDate and Date < @endDate;"
Using cn As New MySqlConnection("connection string here"), _
cmd As New MySqlCommand(bSql, cn)
cmd.Parameters.Add("@startDate", SqlDbType.DateTime).Value = startDate
cmd.Parameters.Add("@endDate", SqlDbType.DateTime).Value = endDate.AddDays(1)
cn.Open()
'...
End Using
不需要或不需要任何格式。如果您试图找到日期的字符串格式,您已经丢失了。试试这个:
Dim bSql As String = "select date, sum(total_price) from bill where Date >= @startDate and Date < @endDate;"
Using cn As New MySqlConnection("connection string here"), _
cmd As New MySqlCommand(bSql, cn)
cmd.Parameters.Add("@startDate", SqlDbType.DateTime).Value = startDate
cmd.Parameters.Add("@endDate", SqlDbType.DateTime).Value = endDate.AddDays(1)
cn.Open()
'...
End Using
不需要或不需要任何格式。在数据库中,我有DD/MM/YYYY 解决方案是在VB中生成MM/DD/YYYY 这是一个密码
oldbc.CommandText=从recette中选择*其中日期介于2015年9月10日和2015年11月10日之间,在数据库中我有DD/MM/YYYY 解决方案是在VB中生成MM/DD/YYYY 这是一个密码
oldbc.CommandText=select*from recette,其中日期介于2015年9月10日和2015年11月10日之间另一种可能是使用一个小函数格式化日期变量,并为MySQL返回正确的日期字符串语法
Public Function MySQLDate(inDate As Date) As String
Return "'" & inDate.ToString(format:="yyyy'/'MM'/'dd") & "'"
End Function
现在,您的查询更具可读性,更易于创建,如下所示:
Dim bSql As String = "select date, sum(total_price) from bill where Date BETWEEN " & MySQLDate(startDate) & " and " & MySQLDate(endDate)
另一种可能是制作一个小函数来格式化日期变量,并为MySQL返回正确的日期字符串语法
Public Function MySQLDate(inDate As Date) As String
Return "'" & inDate.ToString(format:="yyyy'/'MM'/'dd") & "'"
End Function
现在,您的查询更具可读性,更易于创建,如下所示:
Dim bSql As String = "select date, sum(total_price) from bill where Date BETWEEN " & MySQLDate(startDate) & " and " & MySQLDate(endDate)
附加信息:您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解在第1行“2013/11/15”附近使用的正确语法!我不经常使用MYSQL:要清楚,您的SQL包含错误,因为没有GROUP子句。如果在MySQL管理窗口中运行我的SQL代码段,它应该可以工作。一旦你看到它是如何工作的,你可以在VB.NET中修改你的查询。当我在'2013/01/01'和'2013/12/31'之间使用WHERE[date]时,它在mySql workbench中工作,但我使用datetimepicker获取日期并搜索数据,然后它就不能工作了。很好,你现在使用的BETWEEN子句解决了一半的问题!。接下来,您需要找出日期格式不正确的原因。。。VB变量startDate是字符串还是日期对象?附加信息:SQL语法中有错误;检查与MySQL服务器版本对应的手册,以了解在第1行“2013/11/15”附近使用的正确语法!我不经常使用MYSQL:要清楚,您的SQL包含错误,因为没有GROUP子句。如果在MySQL管理窗口中运行我的SQL代码段,它应该可以工作。一旦你看到它是如何工作的,你可以在VB.NET中修改你的查询。当我在'2013/01/01'和'2013/12/31'之间使用WHERE[date]时,它在mySql workbench中工作,但我使用datetimepicker获取日期并搜索数据,然后它就不能工作了。很好,你现在使用的BETWEEN子句解决了一半的问题!。接下来,您需要找出日期格式不正确的原因。。。VB变量startDate是字符串还是日期对象?这很容易受到sql注入攻击。它实际上是在乞求被黑客攻击。这将很容易受到sql注入攻击。这简直是乞求被黑客攻击。