[英]Proper format for date in Oracle SQL
我正在嘗試運行此查詢,每次嘗試修復該查詢時,我都會遇到各種不同的錯誤,我相信這是正確的語法,但它一直告訴我我有無效的日期標識符。 Ive在網上看了一下,但在這里找不到我要做什么。
SELECT CUST_FNAME, CUST_LNAME, CUST_STREET, CUST_CITY, CUST_STATE, CUST_ZIP
FROM LGCUSTOMER, LGPRODUCT, LGBRAND
WHERE BRAND_NAME = 'FORESTERS BEST'
AND INV_DATE BETWEEN '15-JUL-11' AND '31-JUL-11'
ORDER BY CUST_STATE, CUST_LNAME, CUST_FNAME;
在我的Oracle版本中,我使用“ '15 Jul 11'
但這取決於設置。 可以肯定的是,您應該使用TO_DATE('20110715','YYYYMMDD')
因為它明確說明了格式。
看來INV_DATE
列的數據類型是DATE
。 如果是這樣,則應將DATE
值提供給BETWEEN
條件。
您可以檢查數據庫的NLS_DATE_FORMAT
參數。 它指定TO_CHAR
和TO_DATE
函數的默認日期格式。 如果NLS_DATE_FORMAT
是DD-MMM-YY
或DD-MMM-RR
,則您的查詢應運行正常。 否則,您應該在查詢中更改日期字符串以遵循NLS_DATE_FORMAT
。 或者,您可以像下面這樣使用TO_DATE
函數。
...
AND INV_DATE BETWEEN TO_DATE('15-JUL-11', 'DD-MMM-RR') AND TO_DATE('31-JUL-11', 'DD-MMM-RR')
...
也許您應該閱讀NLS_DATE_FORMAT
,檢查oracle文檔 。
此外,您幾乎不應該使用日期格式“ MON”,因為它也取決於語言和環境。
例如,如果您嘗試在中文環境中使用DD-MON-RR格式將“ 26-NOV-13”轉換為日期,則會失敗。 因為MON將與“ 11月”而不是“ NOV”匹配
您還可以將標准格式用於日期文字:
SELECT CUST_FNAME, CUST_LNAME, CUST_STREET, CUST_CITY, CUST_STATE, CUST_ZIP
FROM LGCUSTOMER, LGPRODUCT, LGBRAND
WHERE BRAND_NAME = 'FORESTERS BEST'
AND INV_DATE BETWEEN DATE '2011-07-15' AND DATE '2011-07-31'
ORDER BY CUST_STATE, CUST_LNAME, CUST_FNAME;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.