我在 asp.net 中使用以下 sql 查询分组使用内部联接三个表:
SELECT tblVendorItem.Name,
tblEventItem.Quantity * tblEventItem.Price AS 'Sale',
tblEventService.ServiceDate
FROM tblEventService
INNER JOIN tblEventItem ON
tblEventService.EventServiceID = tblEventItem.EventServiceID
INNER JOIN tblVendorItem ON
tblEventItem.VendorItemID = tblVendorItem.VendorItemID
INNER JOIN tblVendor ON
tblVendorItem.VendorID = tblVendor.VendorID
WHERE (tblEventService.VendorID = 1)
AND (tblEventService.ServiceDate BETWEEN '20-04-2015 00:00:00' AND '23-04-2015 00:00:00')
GROUP BY
tblVendorItem.Name, tblEventItem.Quantity, tblEventItem.Price, tblEventService.ServiceDate
此处, VendorID 和日期是静态的。查询已解析但在执行时,它显示以下错误:
我已检查两者中的数据类型,模型类和表,它显示 datetime 。
有人能告诉我查询中有什么问题或者如何解决这个错误?
答案 0 :(得分:3)
尝试为常量使用ISO标准格式:
tblEventService.ServiceDate BETWEEN '2015-04-20' AND '2015-04-23'
此外,时间成分是不必要的。
另外,我建议只使用单引号作为字符串和日期常量。不要将它们用于列别名。
答案 1 :(得分:1)
如果您希望结果中显示Time
,则查看您的查询似乎需要3个参数。VendorID
,FromDate
和ToDate
。因此,在您的方法中添加以下代码。 VendorID
您需要以不同的方式访问..
string startdate = Convert.ToDateTime(txtDateTo.Text + " 00:00:00").ToString("yyyy-MM-dd" + " 00:00:00");
string enddate = Convert.ToDateTime(txtDateFrom.Text + " 00:00:00").ToString("yyyy-MM-dd" + " 00:00:00");
答案 2 :(得分:0)
尝试添加MM-DD-YYYY日期 即
> where mydatecol BETWEEN CONVERT(datetime, '04-20-2015 00:00:00') AND
> CONVERT(datetime, '04-20-2015 00:00:00')
否则,您必须应用为DD-MM-YYYY指定的格式
> mydatecol BETWEEN CONVERT(datetime, '20-04-2015 00:00:00', 103) AND
> CONVERT(datetime, '20-04-2015 00:00:00', 103)