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

时间:2013-11-15 13:23:01

标签: 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='" & Format(endDate, "yyyy/MM/dd") & "'"

我尝试了上面的代码,但它无法正常工作。有人可以帮帮我吗?

6 个答案:

答案 0 :(得分:3)

如果您正在尝试查找日期的字符串格式,那么您已经输了。试试这个:

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

无需格式化或想要格式化。

答案 1 :(得分:1)

尝试使用SQL BETWEEN运算符,它允许您指定范围的下限和上限。

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];

答案 2 :(得分:1)

在数据库中我有DD / MM / YYYY 解决方案是在VB MM / DD / YYYY中制作

这是一个代码

oldbc.CommandText =&#34;从2011年#10/09#和#10/011/2015#&#34;

之间的日期中选择*

答案 3 :(得分:0)

尝试像这样格式化日期(您还需要使用DateTimePicker的值):

Format(startDate.Value, "yyyy-MM-dd")

更好的选择是使用参数化查询,然后您不必将日期格式化为任何特定格式。更多信息:How do I create a parameterized SQL query? Why Should I?

答案 4 :(得分:0)

Dim bSql As String =“select date,sum(total_price)from bill where Date =”&amp; DateTimePicker1.Text&amp; “和日期=”&amp; DateTimePicker1.Text&amp; “”

设置日期时间选择器日期格式。 我希望它对你有帮助......

答案 5 :(得分:0)

另一种可能性是制作一个小函数来格式化DATE变量并为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)