的問題是:列出已經把「八一」如何執行以下查詢?
我試過月份前的訂單客戶名稱:
SELECT cname
FROM client_master c, sales_orders s
WHERE c.clientno=s.clientno
AND s.orderdate < to_char(orderDate,'mm') ='AUG';
ERROR位於第2行: ORA-00933:SQL命令不能正確地結束 任何人都可以告訴我上述查詢有什麼問題嗎?
的問題是:列出已經把「八一」如何執行以下查詢?
我試過月份前的訂單客戶名稱:
SELECT cname
FROM client_master c, sales_orders s
WHERE c.clientno=s.clientno
AND s.orderdate < to_char(orderDate,'mm') ='AUG';
ERROR位於第2行: ORA-00933:SQL命令不能正確地結束 任何人都可以告訴我上述查詢有什麼問題嗎?
首先,考慮使用JOIN而不是用逗號列出表格。然後您需要調整最後一行以指定8月1日之前的訂單日期。你可以這樣做:
SELECT cname
FROM client_master c
INNER JOIN sales_orders s
ON c.clientno = s.clientno
WHERE s.orderdate < to_date('2016-08-01', 'YYYY-MM-DD')
您仍在比較日期和字符串,因此您依賴於隱式轉換和會話NLS設置。你是否想要使用ANSI日期文字? –
你怎麼知道它是一個字符串?我認爲我們需要真正看到OP的訂單日期。我會問 – kbball
你正在比較這個大概是日期的列和''2016-08-01''這是一個字符串。如果你想要一個日期,你需要一個日期文字,'日期'2016-08-01'',或明確的轉換,'to_date('2016-08-01','YYYY-MM-DD')'。 (如果你的NLS_DATE_FORMAT是YYYY-MM-DD,你將會*工作*,但你不能安全地假設)。 –
再看看'和s.orderdate