首頁 資料庫 mysql教程 如何解决ORA-01843与NLS_DATE_FORMAT问题

如何解决ORA-01843与NLS_DATE_FORMAT问题

Jun 07, 2016 pm 05:55 PM
date format

本文将详细介绍如何解决ORA-01843与NLS_DATE_FORMAT问题,需要的朋友可以参考下

在Oracle SQL的where子句中传入字符类型参数'19-11月-08',使得可以直接和日期类型比较,或者转换一下同日期类型比较。
如果传入的字符格式和NSL_DATE_FORMAT一致,那么可以不转换直接用,否则会报ORA-01861错误。如果转换得不正确,则可能会报ORA-01843或其他错误。
例如:
Trc代码
SQL>
代码如下:
elect count(*) from dba_objects where created>to_date('2008-12-01');
select count(*) from dba_objects where created>to_date('2008-12-01')

第 1 行出现错误:
ORA-01861: 文字与格式字符串不匹配
Trc代码
SQL>
代码如下:
select count(*) from dba_objects where created>to_date('19-11月-08','mm-dd-
yyyy');
select count(*) from dba_objects where created>to_date('19-11月-08','mm-dd-yyyy'
)

第 1 行出现错误:
ORA-01843: 无效的月份
不能识别的字符串和格式转换不对的字符串测试时会出现这样的错误。
使用to_date转换的格式字符串主要为'DD-MON-RR'/'DD-MON-RRRR'或'YYYY-MM-DD'/'YY-MM-DD'。
如果能识别,正确的结果应是这样。
SQL>
代码如下:
select count(*) from dba_objects where created>'19-11月-08';

COUNT(*)
----------
4199
这个格式和会话的NLS_DATE_FORMAT参数值相关。
代码如下:
select SYS_CONTEXT('USERENV','NLS_DATE_FORMAT') DF, SYS_CONTEXT('USERENV','NLS_DATE_LANGUAGE') DL from dual

DF DL
-------------------- --------------------
DD-MON-RR SIMPLIFIED CHINESE
我们在会话级别修改一下这个参数的值。
SQL> alter session set nls_date_format='YYYY-MM-DD';
会话已更改。
SQL>
代码如下:
select count(*) from dba_objects where created>'19-11月-08';
select count(*) from dba_objects where created>'19-11月-08'

第 1 行出现错误:
ORA-01861: 文字与格式字符串不匹配
这样,原来正确的操作就不对了。使用符合NLS_DATE_FORMAT格式的字符串则可以了。
SQL>
代码如下:
select count(*) from dba_objects where created>'2008-12-01';

这个参数和应用的环境也有关系,有的应用会自动修改这个参数值。因此,测试工作最好放到sqlplus中进行。
数据库级别上这个参数的值是固定不变的,如下所示:
Trc代码
SQL>
代码如下:
select * from v$nls_parameters;
PARAMETER VALUE
------------------------------ ----------------------------------------
NLS_LANGUAGE SIMPLIFIED CHINESE
NLS_TERRITORY CHINA
NLS_CURRENCY ¥
NLS_ISO_CURRENCY CHINA
NLS_NUMERIC_CHARACTERS .,
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE SIMPLIFIED CHINESE
NLS_CHARACTERSET ZHS16GBK
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY ¥
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE

已选择19行。
NLS_DATE_LANGUAGE是"SIMPLIFIED CHINESE",即简体中文。所以月份值是中文如"11月"。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1318
25
PHP教程
1269
29
C# 教程
1248
24
PHP Warning: date() expects parameter 2 to be long, string given的解決方法 PHP Warning: date() expects parameter 2 to be long, string given的解決方法 Jun 22, 2023 pm 08:03 PM

使用PHP程式開發時,經常會碰到一些警告或錯誤的提示訊息。其中,可能出現的一個錯誤提示是:PHPWarning:date()expectsparameter2tobelong,stringgiven。這個錯誤的提示訊息意思是:函數date()的第二個參數期望是長整型(long),但是實際傳遞給它的是字串(string)。那麼,我們

如何根據當前時間戳記建立文件/資料夾並為其命名 如何根據當前時間戳記建立文件/資料夾並為其命名 Apr 27, 2023 pm 11:07 PM

如果您正在尋找根據系統時間戳記自動建立文件和資料夾並為其命名的方法,那麼您來對地方了。有一個超級簡單的方法可以用來完成這項任務。然後,建立的資料夾或檔案可用於各種目的,例如儲存檔案備份、根據日期對檔案進行排序等。在本文中,我們將透過一些非常簡單的步驟來解釋如何在Windows11/10中自動建立檔案和資料夾,並根據系統的時間戳記對其進行命名。使用的方法是批次腳本,非常簡單。希望你喜歡閱讀這篇文章。第1節:如何根據系統目前時間戳記自動建立資料夾並命名第1步:首先,導覽至要在其中建立資料夾的父資料夾,

如何使用Date類別的getTime()方法取得日期的毫秒錶示形式 如何使用Date類別的getTime()方法取得日期的毫秒錶示形式 Jul 24, 2023 am 11:42 AM

如何使用Date類別的getTime()方法取得日期的毫秒錶示形式在Java中,Date類別是用來表示日期和時間的類別。它提供了許多有用的方法來操作和獲取日期物件的資訊。其中,getTime()方法是Date類別中的重要方法,它可以傳回日期物件的毫秒錶示形式。接下來,我們將詳細介紹如何使用此方法來取得日期的毫秒錶示形式,並提供對應的程式碼範例。使用Date類別的g

Java中使用Date和SimpleDateFormat類別來處理時間的方法及用法介紹 Java中使用Date和SimpleDateFormat類別來處理時間的方法及用法介紹 Apr 21, 2023 pm 03:01 PM

一.介紹java.util套件中的Date類別表示特定的時間,精確到毫秒。如果要想使用我們的Date類,那麼我們必須得引入我們的Date類。 Date類別直接寫入年份是無法得到正確的結果的。因為java中Date是從1900年開始算的,所以前面的第一個參數只要填入從1900年後過了多少年就是你想要得到的年份。月需要減1,日可以直接插入。這種方法用的比較少,常用的是第二種方法。這種方法是將一個符合特定格式,例如yyyy-MM-dd,的字串轉換成為Date類型的資料。首先,定義一個Date類型的物件Date

Python中的日曆庫和日期庫有哪些選擇? Python中的日曆庫和日期庫有哪些選擇? Oct 21, 2023 am 09:22 AM

Python中有許多優秀的日曆庫和日期庫供我們使用,這些庫可以幫助我們處理日期和日曆相關的操作。接下來,我將為大家介紹幾個常用的選擇,並提供對應的程式碼範例。 datetime庫:datetime是Python內建的日期和時間處理模組,提供了許多日期和時間相關的類別和方法,可以用於處理日期、時間、時間差等操作。範例程式碼:importdatetime#取得當

springboot配置date欄位傳回時間戳記的問題怎麼解決 springboot配置date欄位傳回時間戳記的問題怎麼解決 May 20, 2023 am 11:16 AM

遇到一個問題,springboot升級成2.0後,從資料庫查出來的日期,用Date接收,最後直接回傳給前端,在Google瀏覽器中能正常顯示成yyyy-MM-ddHH:mm:ss格式。但是在IE瀏覽器中日期顯示的是“亂碼”,因為springboot1.x版本的預設將Date欄位返回的是時間戳,而Google、IE都會自動將時間戳轉換成yyyy-MM-ddHH:mm:ss ;在springboot2.0後,spring會將Date欄位自動給轉成UTC字串了(在沒有配置的情況下),所以date需要轉換成時間戳還是y

Java中的Stringbuild,Date和Calendar類別怎麼使用 Java中的Stringbuild,Date和Calendar類別怎麼使用 May 22, 2023 pm 04:52 PM

Stringbuild類別由於String類別的物件內容不可改變,每次拼接都會建構一個新的String對象,既耗時,又浪費記憶體空間這時需要透過java提供的StringBuild類別來解決這個問題StringBuilder又稱為可變字元序列,它是一個類似String的字串緩衝區,可以看成是一個容器,容器中可以裝很多字串可變指的是StringBuilder物件中的內容是可變的建構方法publicStringBuilder():建立一個空的緩衝區publicStringBuilder(Stringsr

PHP格式化一個 GMT/UTC 日期/時間 PHP格式化一個 GMT/UTC 日期/時間 Mar 21, 2024 am 10:41 AM

這篇文章將為大家詳細講解有關PHP格式化一個GMT/UTC日期/時間,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章後可以有所收穫。格式化PHP中的GMT/UTC日期/時間簡介在php中,格式化GMT/UTC日期/時間對於正確顯示和處理跨時區日期至關重要。本文將介紹如何使用PHP的DateTime類別格式化GMT/UTC日期/時間,以及各種可用的格式化選項。 DateTime類別DateTime類別表示一個日期和時間。它可以儲存和操作GMT/UTC等時區中的日期/時間值。要建立新的Da

See all articles