2017-08-20 129 views
-1
SELECT dish_category.Cat_Name, order_items.OI_Name, dish_management.D_Price, order_items.OI_Quantity, order_items.OI_Price, order_management.O_Time 
FROM dish_category 
INNER JOIN dish_management ON dish_category.Cat_ID = dish_management.Cat_ID 
INNER JOIN order_items ON dish_management.D_ID = order_items.D_ID 
INNER JOIN order_management ON order_items.O_ID = order_management.O_ID 
WHERE order_management.O_Time = (CONVERT(DATETIME, CONVERT(DATETIME, CONVERT(VARCHAR, date, 103),103)) BETWEEN @DSStart_date AND @DSEnd_date) 

你能指点我哪里查询可能是错误的吗?该错误信息是:SQL转换日期时间错误

错误的函数参数“”单不承认无法解析 查询文本

回答

0
  • 你做了太多的调用CONVERT。您只需要2:一个用于将日期列转换为varchar,另一个用于将结果转换为datetime格式。
  • 当致电CONVERT(varchar, date)您只传递2个参数,103用于日期转换,而不是varchar转换。
  • 如果你想用今天的日期,用DATE(NOW())像我一样如下:

试试这个:

SELECT dish_category.Cat_Name, order_items.OI_Name, dish_management.D_Price, 
order_items.OI_Quantity, order_items.OI_Price, order_management.O_Time 

FROM dish_category INNER JOIN dish_management ON dish_category.Cat_ID = dish_management.Cat_ID 
INNER JOIN order_items ON dish_management.D_ID = order_items.D_ID 
INNER JOIN order_management ON order_items.O_ID = order_management.O_ID 

WHERE (DATE(NOW()) BETWEEN @DSStart_date AND @DSEnd_date) 
+0

现在它显示函数参数列表中的错误')'未识别无法解析查询文本' –

+0

您是否使用我的最新更新?请注意我更新了答案。 –

+0

是的,WHERE(CONVERT(DATETIME,CONVERT(varchar ,date),103)BETWEEN @DSStart_date AND @DSEnd_date) –

0

你,显然是使用SQL Server语法CONVERT(),而不是MySQL的句法。

我不知道什么是date,但这个版本的查询想到:

SELECT c.Cat_Name, order_items.OI_Name, m.D_Price, oi.OI_Quantity, 
     oi.OI_Price, om.O_Time 
FROM dish_category c INNER JOIN 
    dish_management m 
    ON c.Cat_ID = m.Cat_ID INNER JOIN 
    order_items oi 
    ON m.D_ID = oi.D_ID INNER JOIN 
    order_management om 
    ON oi.O_ID = om.O_ID 
WHERE om.O_Time BETWEEN @DSStart_date AND @DSEnd_date 

或者,更好:

WHERE om.O_Time >= @DStart_date AND @DSEnd_Date; 

当然,你的代码还包含:

(CONVERT(DATETIME, CONVERT(DATETIME, CONVERT(VARCHAR, date, 103),103)) 

我不知道这是应该做什么,卡在列名与BETWEEN之间的子句。