Mysql vb.net获取两个日期之间的数据库数据

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

我有两个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='" & 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注入攻击。这简直是乞求被黑客攻击。