我有两个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") & "'"
我尝试了上面的代码,但它无法正常工作。有人可以帮帮我吗?
答案 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)