日期时间查询出错

时间:2015-04-11 12:08:41

标签: c# mysql sql-server datetime

我在 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 日期是静态的。查询已解析但在执行时,它显示以下错误:

Image of the Error has been attached

我已检查两者中的数据类型,模型类和,它显示 datetime

有人能告诉我查询中有什么问题或者如何解决这个错误?

3 个答案:

答案 0 :(得分:3)

尝试为常量使用ISO标准格式:

tblEventService.ServiceDate BETWEEN '2015-04-20' AND '2015-04-23'

此外,时间成分是不必要的。

另外,我建议只使用单引号作为字符串和日期常量。不要将它们用于列别名。

答案 1 :(得分:1)

如果您希望结果中显示Time,则查看您的查询似乎需要3个参数。VendorIDFromDateToDate。因此,在您的方法中添加以下代码。 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)