各位前輩好 環境是oracle 11G
範例題目是
在OE帳戶orders資料表中,請完成下述WHERE子句,以查詢在2006年7月10日以前下訂之訂單編號和客戶編號以及訂單日期。
SELECT order_id, customer_id,TO_CHAR(order_date,'DD/MM/YYYY')
FROM orders
WHERE order_date < TO_DATE('JUL 10 2006','____________'); <===空格要下什麼
SELECT order_id,customer_id,TO_CHAR(order_date,'DD/MM/YYYY')
FROM orders
WHERE order_date < TO_DATE('JUL 10 2006','MON DD YY'); <====答案是給這樣
但執行是
ORA-01843: 不是有效的月份
01843. 00000 - "not a valid month"
*Cause:
*Action:
我的 nls_language是設中文
WHERE order_date < TO_DATE('7月 10 06','MM DD YY'); 改成這樣執行也不行
請問該怎麼打才是正確的?
這個是在練習TO_DATE函數轉日期字串 ,配合格式 改成'月 日 年'不是嗎@@
請問一定要先改成英文顯示嗎?
你先試試看第二道!
另外你是看哪本書?
書名可以講嗎XD 怕有廣告嫌疑oracle sql 2021/10出的
一級哥
你給的兩行都可以執行
第一個結果是10-07月 -06
第二個結果是24-2月 -22
但是要怎麼解答我的題目呢?
我在沒改NLS_DATE_LANGUAGE下
SELECT order_id,customer_id,TO_CHAR(order_date,'DD/MM/YYYY')
FROM orders
WHERE order_date < TO_DATE('2006-07-10', 'YYYY-MM-DD');
就可以執行了~~~
這樣是答案給錯了嗎???
那本書可能是翻譯的, 依照美國的習慣.
Oracle 的NLS 設定有分很多層級.
建議你先參考我給你的連結,裡面有提到多種 format, 月份部分使用
MM, 不要使用 MON 或是 MONTH.
因為書的前四章有提到日期的都是寫DD MM YY~~
就這第五章出現MON DD yyyy
然後我直接在答案最後一行加上'NLS_DATE_LANGUAGE = American'
也是可以正常執行。
因為我是新手 沒啥概念~~
不知道該不該把NLS語言就固定設成American算了
SELECT order_id, customer_id,TO_CHAR(order_date,'DD/MM/YYYY')
FROM orders
WHERE order_date < TO_DATE('JUL 10 2006','MON DD YYYY','NLS_DATE_LANGUAGE = American');