2017-08-20 154 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之間的子句。