Heim Datenbank MySQL-Tutorial Oracle BUG invalid julianday

Oracle BUG invalid julianday

Jun 07, 2016 pm 05:08 PM

如果ORACLE遇到非法或异常的时间类型数据时,在某些特定的情况下将其自动转换为rsquo;0000-00-00rsquo;而存储下来,不会抛出异

在一次datastage做etl,需要将一个source库的tab1数据导入到目标库tab2,两张表结构相同,发现etl执行报错invalid julian day

如果Oracle遇到非法或异常的时间类型数据时,在某些特定的情况下将其自动转换为’0000-00-00’而存储下来,不会抛出异常或错误提示。

比如在PL/SQL下,正常情况是不允许 年份为0值的:

SQL> select to_date('0000-01-01','yyyy-mm-dd') from dual;

 

select to_date('0000-01-01','yyyy-mm-dd') from dual

 

ORA-01841: (full) year must be between -4713 and +9999, and not be 0

但如果使用DATE函数,ORACLE将不会给出错误提示,而自动转换为‘0000-00-00‘:

SQL> select date '0000-01-01' from dual;

 

DATE'0000-01-01'

----------------

0/0/0000

这时如果使用DATE函数处理后来插入或更新这类日期值时,系统是不会给出错误提示,这在9i和10G下都是同样的处理方式。

还有另外两种情况,在PL/SQL下也会出现这样的问题:

1.     如果日期表达式的结果小于或等于0,结果都为'0000/00/00':

SQL> select to_date('0001-01-01', 'yyyy-mm-dd')-720 from dual;

 

TO_DATE('0001-01-01','YYYY-MM-

------------------------------

0/0/0000

 

SQL> select to_date('0001-01-01', 'yyyy-mm-dd')-365 from dual;

 

TO_DATE('0001-01-01','YYYY-MM-

------------------------------

0/0/0000

 

2.     对100到1500年之内的所有整百年的日期进行计算,如果结果为2月29的话,结果都为'0000/00/00':

SQL> select date '0099-2-28' +1 from dual;

 

DATE'0099-2-28'+1

-----------------

3/1/0099

 

SQL> select date '0100-2-28' +1 from dual;

 

DATE'0100-2-28'+1

-----------------

0/0/0000

 

在其它语言的处理上,也有类似的情况。而且在目前所有的ORACLE版本中,都没有对这类的错误修正,,所以在进行日期类型的值做转换和处理时,应该注意其转换后值的合法性和有效性。

后来处理还发现

有问题的日期用函数to_char的话会出现两种值,最后通过这两个值找到了问题数据,将错误日期改掉才解决~
to_char(DISABLE_DATE,'yyyy-MM-dd') = '3593-11-30'
or  to_char(CLMDOC_READY_DATE,'yyyy-MM-dd') = '3593-11-30'
or  to_char(DEATH_DATE,'yyyy-MM-dd') = '3593-11-30'
or  to_char(DIAGNOSE_DATE,'yyyy-MM-dd') = '3593-11-30'
or  to_char(DELAY_DATE,'yyyy-MM-dd') = '3593-11-30'
or  to_char(FCD,'yyyy-MM-dd') = '3593-11-30'
or  to_char(LCD,'yyyy-MM-dd') = '3593-11-30'
or
to_char(DISABLE_DATE,'yyyy-MM-dd') = '0000-00-00'
or  to_char(CLMDOC_READY_DATE,'yyyy-MM-dd') = '0000-00-00'
or  to_char(DEATH_DATE,'yyyy-MM-dd') = '0000-00-00'
or  to_char(DIAGNOSE_DATE,'yyyy-MM-dd') = '0000-00-00'
or  to_char(DELAY_DATE,'yyyy-MM-dd') = '0000-00-00'
or  to_char(FCD,'yyyy-MM-dd') = '0000-00-00'
or  to_char(LCD,'yyyy-MM-dd') = '0000-00-00'
)
;

linux

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie verändern Sie eine Tabelle in MySQL mit der Änderungstabelleanweisung? Wie verändern Sie eine Tabelle in MySQL mit der Änderungstabelleanweisung? Mar 19, 2025 pm 03:51 PM

In dem Artikel werden mithilfe der Änderungstabelle von MySQL Tabellen, einschließlich Hinzufügen/Löschen von Spalten, Umbenennung von Tabellen/Spalten und Ändern der Spaltendatentypen, erläutert.

Erläutern Sie InnoDB Volltext-Suchfunktionen. Erläutern Sie InnoDB Volltext-Suchfunktionen. Apr 02, 2025 pm 06:09 PM

Die Volltext-Suchfunktionen von InnoDB sind sehr leistungsfähig, was die Effizienz der Datenbankabfrage und die Fähigkeit, große Mengen von Textdaten zu verarbeiten, erheblich verbessern kann. 1) InnoDB implementiert die Volltext-Suche durch invertierte Indexierung und unterstützt grundlegende und erweiterte Suchabfragen. 2) Verwenden Sie die Übereinstimmung und gegen Schlüsselwörter, um den Booleschen Modus und die Phrasesuche zu unterstützen. 3) Die Optimierungsmethoden umfassen die Verwendung der Word -Segmentierungstechnologie, die regelmäßige Wiederaufbauung von Indizes und die Anpassung der Cache -Größe, um die Leistung und Genauigkeit zu verbessern.

Wie konfiguriere ich die SSL/TLS -Verschlüsselung für MySQL -Verbindungen? Wie konfiguriere ich die SSL/TLS -Verschlüsselung für MySQL -Verbindungen? Mar 18, 2025 pm 12:01 PM

In Artikel werden die Konfiguration der SSL/TLS -Verschlüsselung für MySQL, einschließlich der Erzeugung und Überprüfung von Zertifikaten, erläutert. Das Hauptproblem ist die Verwendung der Sicherheitsauswirkungen von selbstsignierten Zertifikaten. [Charakterzahl: 159]

Was sind einige beliebte MySQL -GUI -Tools (z. B. MySQL Workbench, PhpMyAdmin)? Was sind einige beliebte MySQL -GUI -Tools (z. B. MySQL Workbench, PhpMyAdmin)? Mar 21, 2025 pm 06:28 PM

In Artikel werden beliebte MySQL -GUI -Tools wie MySQL Workbench und PhpMyAdmin beschrieben, die ihre Funktionen und ihre Eignung für Anfänger und fortgeschrittene Benutzer vergleichen. [159 Charaktere]

Wie behandeln Sie große Datensätze in MySQL? Wie behandeln Sie große Datensätze in MySQL? Mar 21, 2025 pm 12:15 PM

In Artikel werden Strategien zum Umgang mit großen Datensätzen in MySQL erörtert, einschließlich Partitionierung, Sharding, Indexierung und Abfrageoptimierung.

Differenz zwischen Clustered Index und nicht klusterer Index (Sekundärindex) in InnoDB. Differenz zwischen Clustered Index und nicht klusterer Index (Sekundärindex) in InnoDB. Apr 02, 2025 pm 06:25 PM

Der Unterschied zwischen Clustered Index und nicht klusterer Index ist: 1. Clustered Index speichert Datenzeilen in der Indexstruktur, die für die Abfrage nach Primärschlüssel und Reichweite geeignet ist. 2. Der nicht klusterierte Index speichert Indexschlüsselwerte und -zeiger auf Datenzeilen und ist für nicht-primäre Schlüsselspaltenabfragen geeignet.

Wie lassen Sie eine Tabelle in MySQL mit der Drop -Tabelle -Anweisung fallen? Wie lassen Sie eine Tabelle in MySQL mit der Drop -Tabelle -Anweisung fallen? Mar 19, 2025 pm 03:52 PM

In dem Artikel werden in MySQL die Ablagerung von Tabellen mithilfe der Drop -Tabellenerklärung erörtert, wobei Vorsichtsmaßnahmen und Risiken betont werden. Es wird hervorgehoben, dass die Aktion ohne Backups, die Detaillierung von Wiederherstellungsmethoden und potenzielle Produktionsumfeldgefahren irreversibel ist.

Wie erstellen Sie Indizes für JSON -Spalten? Wie erstellen Sie Indizes für JSON -Spalten? Mar 21, 2025 pm 12:13 PM

In dem Artikel werden in verschiedenen Datenbanken wie PostgreSQL, MySQL und MongoDB Indizes für JSON -Spalten in verschiedenen Datenbanken erstellt, um die Abfrageleistung zu verbessern. Es erläutert die Syntax und die Vorteile der Indizierung spezifischer JSON -Pfade und listet unterstützte Datenbanksysteme auf.

See all articles