2015-04-20 38 views
2

什麼是SQL的錯誤如下:字符至今在Oracle SQL

select to_Date(substr('2/22/2015 9:20:06 AM',1,9),'mm/dd/yyyy','DD-MON-YY') from dual 

我收到以下錯誤:

ORA-12702: invalid NLS parameter string used in SQL function error

select substr('2/22/2015 9:20:06 AM',1,9) from dual顯示2/22/2015。我想將其轉換爲日期。

回答

1

TO_DATE方法刪除第三個參數:

select to_date(substr('2/22/2015 9:20:06 AM',1,9),'mm/dd/yyyy') from dual 

這是nlsparam(見documentation)。

1

to_Date(substr('2/22/2015 9:20:06 AM',1,9),'mm/dd/yyyy','DD-MON-YY')

將查詢分解爲單個部分,然後理解。

substr and to_date是正在使用的兩個功能。

  1. 提取所需的子串,SUBSTR( '2015年2月22日上午九時20分06秒',1,9)
  2. 在步驟1中,TO_DATE(SUBSTR的輸出應用TO_DATE( '2/22/2015 9:20:06 AM',1,9),'mm/dd/yyyy')
  3. 而就是這樣。

因此,在您的發佈查詢中,'DD-MON-YY'格式掩碼根本就不是必需的。

TRUNC(TO_DATE('2/22/2015 9:20:06 AM', 'MM/DD/YYYY HH:MI:SS AM')) 

TRUNC刪除從DATE類型的時間部分:

此外,爲了你正在努力實現等效。

另外,

您可以使用ANSI TIMESTAMP文字:

TRUNC(TIMESTAMP '2015-02-22 09:20:06')