如何解决ORA-01843与NLS_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月"。

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Wenn Sie nach einer Möglichkeit suchen, Dateien und Ordner automatisch auf der Grundlage von Systemzeitstempeln zu erstellen und zu benennen, sind Sie hier genau richtig. Es gibt eine supereinfache Möglichkeit, diese Aufgabe zu erledigen. Die erstellten Ordner oder Dateien können dann für verschiedene Zwecke verwendet werden, z. B. zum Speichern von Dateisicherungen, zum Sortieren von Dateien nach Datum usw. In diesem Artikel erklären wir in einigen sehr einfachen Schritten, wie Sie in Windows 11/10 automatisch Dateien und Ordner erstellen und diese entsprechend dem Zeitstempel des Systems benennen. Die verwendete Methode ist ein Batch-Skript, das sehr einfach ist. Ich hoffe, Ihnen hat die Lektüre dieses Artikels gefallen. Abschnitt 1: So erstellen und benennen Sie automatisch einen Ordner basierend auf dem aktuellen Zeitstempel des Systems. Schritt 1: Navigieren Sie zunächst zum übergeordneten Ordner, in dem Sie den Ordner erstellen möchten.

Bei der Entwicklung mit PHP-Programmen stoßen Sie häufig auf Warn- oder Fehlermeldungen. Unter diesen kann eine Fehlermeldung erscheinen: PHPWarning:date()expectsparameter2tobelong,stringgiven. Die Fehlermeldung bedeutet: Es wird erwartet, dass der zweite Parameter der Funktion date() eine lange Ganzzahl (long) ist, aber tatsächlich wird ihm ein String (string) übergeben. Also, wir

1. Einführung Die Date-Klasse im Paket java.util stellt eine bestimmte Zeit dar, die auf Millisekunden genau ist. Wenn wir unsere Date-Klasse verwenden möchten, müssen wir unsere Date-Klasse einführen. Das direkte Schreiben des Jahres in die Date-Klasse führt nicht zum korrekten Ergebnis. Da das Datum in Java ab 1900 berechnet wird, erhalten Sie das gewünschte Jahr, solange Sie den ersten Parameter mit der Anzahl der Jahre seit 1900 ausfüllen. Der Monat muss um 1 subtrahiert werden und der Tag kann direkt eingefügt werden. Diese Methode wird selten verwendet und die zweite Methode wird häufig verwendet. Bei dieser Methode wird eine Zeichenfolge, die einem bestimmten Format entspricht, z. B. jjjj-MM-tt, in Daten vom Typ „Datum“ konvertiert. Definieren Sie zunächst ein Objekt vom Typ Datum

Es gibt viele hervorragende Kalenderbibliotheken und Datumsbibliotheken in Python, die uns bei der Abwicklung datums- und kalenderbezogener Vorgänge helfen können. Als Nächstes stelle ich Ihnen einige gängige Optionen vor und stelle entsprechende Codebeispiele bereit. Datetime-Bibliothek: Datetime ist das integrierte Datums- und Uhrzeitverarbeitungsmodul von Python. Es bietet viele datums- und zeitbezogene Klassen und Methoden, mit denen Datums- und Uhrzeitangaben, Zeitunterschiede und andere Vorgänge verarbeitet werden können. Beispielcode: importdatetime#Erhalten Sie das aktuelle Datum

So erhalten Sie eine Millisekundendarstellung des Datums mit der Methode getTime() der Date-Klasse. In Java ist die Date-Klasse eine Klasse, die zur Darstellung von Datum und Uhrzeit verwendet wird. Es bietet viele nützliche Methoden zum Bearbeiten und Abrufen von Informationen über Datumsobjekte. Unter diesen ist die Methode getTime() eine wichtige Methode in der Date-Klasse, die die Millisekundendarstellung des Datumsobjekts zurückgeben kann. Als nächstes werden wir detailliert beschreiben, wie Sie diese Methode verwenden, um die Millisekundendarstellung eines Datums zu erhalten, und entsprechende Codebeispiele bereitstellen. Verwendung der Date-Klasse

Nach dem Upgrade von Springboot auf 2.0 wurde das aus der Datenbank gefundene Datum mithilfe von Date empfangen und schließlich direkt an das Frontend zurückgegeben. Es kann normal im Format yyyy-MM-ddHH:mm:ss angezeigt werden Chrom. Das im IE-Browser angezeigte Datum ist jedoch „unverständlich“, da die Version springboot1.x standardmäßig einen Zeitstempel im Feld „Datum“ zurückgibt und Google und IE den Zeitstempel automatisch in yyyy-MM-ddHH:mm:ss ;After konvertieren Springboot2.0, Spring konvertiert das Datumsfeld automatisch in eine UTC-Zeichenfolge (ohne Konfiguration), daher muss das Datum in einen Zeitstempel oder y konvertiert werden

In diesem Artikel wird ausführlich erklärt, wie man ein GMT/UTC-Datum/Uhrzeit mit PHP formatiert. Der Herausgeber hält es für recht praktisch, daher teile ich es Ihnen als Referenz mit und hoffe, dass Sie nach dem Lesen dieses Artikels etwas gewinnen können. Einführung in die Formatierung von GMT/UTC-Datum/Uhrzeit in PHP In PHP ist die Formatierung von GMT/UTC-Datum/Uhrzeit von entscheidender Bedeutung für die korrekte Anzeige und Verarbeitung von zeitzonenübergreifenden Daten. In diesem Artikel wird erläutert, wie Sie ein GMT/UTC-Datum/eine GMT/UTC-Datum/Uhrzeit mit der DateTime-Klasse von PHP formatieren und welche verschiedenen Formatierungsoptionen verfügbar sind. DateTime-Klasse Die DateTime-Klasse repräsentiert ein Datum und eine Uhrzeit. Es kann Datums-/Uhrzeitwerte in Zeitzonen wie GMT/UTC speichern und bearbeiten. Um einen neuen Da zu erstellen

Stringbuild-Klasse Da der Objektinhalt der String-Klasse nicht geändert werden kann, wird bei jedem Zusammenfügen ein neues String-Objekt erstellt, was zeitaufwändig ist und Speicherplatz verschwendet. Zu diesem Zeitpunkt müssen Sie dieses Problem durch StringBuild lösen Die von Java bereitgestellte Klasse StringBuilder ist ein String-Puffer, der als Container betrachtet werden kann ist variabel. Die Konstruktionsmethode publicStringBuilder(): erstellt einen leeren Puffer publicStringBuilder(Stringsr
