JDBC: Resultset beim Thema MEZ&MESZ

Status
Nicht offen für weitere Antworten.
R

rh-spirit

Gast
Hi,

irgendie komme ich zur Zeit nicht aufs Java.Sun.Forum, deshalb poste ich mein Anliegen schon einmal hier.

Es geht um die JavaAPI der Datenbankschnittstelle.

Folgendes: Ich habe eine Oracle DB und lese über Java den zurückgegebenen Cursor (->ResultSet in Java) einer
Prozedur aus. Der Inhalt um den es mir hier geht sind zwei Spalten "MEZ" und "MESZ" (OracleKalenderobjekt) in denen logischerweiße Zeiten eingetragen sind.

Die API bietet die Möglichkeit mit REsultSet.getString / .getDate /.getTimestampt / formatter.format(.getObject)
die Zeit&Datum auszulesen.
ABER: Hat irgendjemand mal versucht im Bereich der Winter-Sommerzeitumstellung (bzw.andersrum) Werte auszulesen?? Die JavaAPI liefert immer einen MESZ komformen (ich nehme an das liegt an der Systemzeitzone&locale) Wert zurück.

Beispiel:

(MEZ Zeiten) (MESZ-Zeit als Hilfe)
in DB: 27.03.2005 01:45 in Java: 27.03.2005 01:45 01:45
27.03.2005 02:00 27.03.2005 03:00 03:00
.... 02:15 03:15 03:15
27.03.2005 03:00 03:00 04:00
03:15 03:15 04:15

Seht ihr was ich meine?? Ab 2:00 wird auf MESZ 3:00 gestellt. Das gibt das Java auch grandios aus.
Warum aber??? Warum verfälscht es meinen DB-Inhalt?? Blöderweiße aber auch nur in dieser Zeitumstellungsphase.
(in MESZ gibt es kein 27.03.2005 02:15 sondern nur 03:15 ). Daher kommt dann auch noch ein sinnloser "Verdopplungseffekt" zustande..


Hat jemand eine IDee, wie ich an die puren Daten komme?
Kann ich JaVA sagen: Lass den Scheiss mit MESZ??

Ich glaube mit etwas Handwerk wie mit Java-Calendar den DB-Inhalt jedesmal umzutransformieren und wieder zürück ist das Problem umgehbar. Aber Perfomancetechnisch der halbe Tod und programmiertechnisch sinnloses und unsauberes Gehacke.

Für Ideen und vorallen änhlichen Erfahrungen bin ich Dankbar.

G'sundes Neues noch allen !!!
 
R

rh_spirit

Gast
DB: MEZ--------------------------in Java:----------------(MESZ)
27.03.2005 01:45--------27.03.2005 01:45-----------01:45
---------------02:00-----------------------03:00-----------03:00
---------------02:30-----------------------03:30-----------03:30
---------------03:00-----------------------03:00-----------04:00
---------------03:30-----------------------03:30-----------04:30

Wie kann man hier ordentliche Tabellen machen, wenn kein TAB geht?
 

Bleiglanz

Gesperrter Benutzer
wenn, dann musst du für die eine Spalte einen Calender mit der DayLightsavings (manuell einstellen) verwenden und für die andere nicht, und noch dazu einen herumhack um rs.getDate()

Frage: was sind denn die "puren" Daten in den beiden Spalten?

Wärs nicht besser UTC oder sowas zu verwenden und beim hineinschreiben schon alles aufzulösen??

BTW: ich dachte bisher immer, dass fast alle Programmierer auf der Welt das Problem der doppelten / fehlenden Stunde bei der Zeitumstellung aus Unwissenheit oder Faulheit einfach ignorieren, ich übrigens auch :)
 
R

rh_spirit

Gast
Ganz links ("in DB:") sind die Originaldaten.

-genau das mit dem Gehacke&Calender wollte ich vermeiden (eigentlich sollte das auch nicht notwendig sein, wenn ich die eigentlich korrekten Daten aus der DB bekommen würde)

-ist UTC nicht deprecated?

-Am liebsten würde ich es auch ignorieren :) Aus der Sicht der Informationstechnologie hätte WI&SO Zeit nie eingeführt werden sollen :)
-Aber wenn man leider mit rechnen&operieren muss kommt man nicht drumherum. Ich saß lange bis ich meinen Algorithmen die Umstellung eingeprägt hatte (vorallen die Phase an sich) und DANN MUSS ICH feststellen, daß die JAVA-API ohne meinen WIllen einfach Zeugs umändert anstatt mir den reellen in der DB gespeicherten Zeitpunkt wiederzugeben.
 
R

rh-spirit

Gast
Ich habs mal mit dem Calender probiert...
allerdings nützt das nichts, da ich dem Calender ja schon falsche "Werte" übergeben würde. Ich könnte sonstwas für Sachen im Programm dann machen, aber das Problem liegt eindeutig an der Java-Schnittstellen-Api, die ja schon mit dem alleinigen Versuch Werte zu holen, jene in MESZ "umwandelt"
(jedenfalls in der Umstellungsphase). Ob über String/long/date/timestamp, immer kommt 03:30 statt 02:30 .
Das ist ein echtes Problem langsam. Vorallen was mich ärgert, warum von Java automatisert veränderte Werte kommen. Sowas darf nicht sein. Ich will die Originaldaten aus der DB!!!
 

Bleiglanz

Gesperrter Benutzer
kann eigentlich nicht sein: Java weiss - ohne manuellen Eingriff - gar nichts von der Winterzeit/Sommerzeit Umstellung

eher ein Oracle Effekt

http://download-west.oracle.com/docs/cd/B14117_01/server.101/b10749/ch4datetime.htm#i1006760

The TIMESTAMP WITH TIME ZONE and TIMESTAMP WITH LOCAL TIME ZONE datatypes have the following behavior:

If a time zone region is associated with the datetime value, then the database server knows the Daylight Saving Time rules for the region and uses the rules in calculations.
 
R

rh-spirit

Gast
Verdammt, du hast Recht!

Klingt natürlich plausibel.
Bisweilen dachte ich, das die API Schnittstellenbeschreibung Voll und Ganz verantwortlich für den DAtenaustausch ist. Das Oracle trotzdem noch mitmischen kann wusste ich nicht.
Jetzt wird mir auch klar, warum man bei rs.getDate/timestamp einen Calender/Zeitzone mit übergeben werden kann. Rein theoretisch könnte ich eine Zeitzone einstellen, die keine Wi&So Umstellungen macht, aber dann müsste ich immernoch wieder umtransformieren. Trotzdem läßt mich der Gedanke mit den Original-Datenbank-Inhalt nicht in Ruhe:
Zum Beispiel in PL/SQL Developer wird der Inhalt korrekt angezeigt wird. Warum übergibt Oracle hier die korrekten Werte, bzw. was teilt deren Schnittstelle der DB mit, das das Problem nicht auftritt. Bzw. dann wird es doch in Java hoffentlich eine Konfigurationsmöglichkeit geben?

Im übrigen Danke auch für den Hinweis.
Das hat das Problem wenigsten genauer eingegrenzt.
 
R

rh-spirit

Gast
Warum geht das eigentlich nicht??

Code:
TimeZone tz = TimeZone.getTimeZone("Etc/UTC");
        Calendar cal = GregorianCalendar.getInstance (tz);
        ...

        ResultSet.getTimestamp("MEZ",cal);

Leider gibt mir das auch nicht die Original MEZ Zeit heraus, sondern auch Zeitzonenformatiert (eine Stunde früher).
Hat natürlich den Vorteil das die doppelten Stunden nicht auftreten. Arbeiten kann man dann aber auch nicht damit.[/quote]
 

Bleiglanz

Gesperrter Benutzer
welchen Datentyp hat eigentlich die Spalte in der DB?

und wer in der ganzen Angelegenheit verfügt überhaupt über die Information, dass die Umstellung am 27.März war??
 
R

rh-spirit

Gast
Oracle-Datentyp: Date

Am 27.03.2005 war WZ->SZ Umstellung.
Prinzipell weiß ich oder das Programm das natürlich nicht. Aber in der DB sind wie gesagt zwei Spalten. Eine mit dem MEZ Zeitstempel und die andere mit MESZ. Suche ich im Monat März/April nach der Umstellung, so muss nur auf einen Unterschied der beiden Spalten geachtet werden. Findet man einen, so war es 02:00 und man kann dementsprechend mit dem gewünschten Handling beginnen.
DAs funktioniert natürlich nur, wenn die Originaldaten auslesbar sind. Da Oracle scheinbar für 02:00 gleich 03:00 zurückgibt, tritt die Zeit von 03:xx zweimal auf (siehe Beispiel zuvor), und der Unterschied wäre erst ab der umgestellten Zeit feststellbar.
 
R

rh-spirit

Gast
Ich glaube mir leuchtet die Lösung ein:

Wenn in Java der Oracletyp"Date" immer mit einen bestimmten CalendarObjekt formatiert zurückkommt (default, also ohne Angabe Calendar, scheint also die ORacleZeitzone zu sein),
dann könnte ich doch einen Calendar mit Zeitzone MEZ nehmen.
Allerdings habe ich diese Zeitzone in den 3oo Typen nicht gefunden. Bzw. einen Calender, der unsere Zeitzone GMT+1 ohne "Daylightsaving" benutzt. Leider habe ich auch keine Methode gefunden, mit der man den Calender irgendwie auf daylightsaving "off" stellt. Wie das intern zum Beispiel PL&SQL Developer macht weiss ich nicht. Scheinbar kann der besser mit dem OracleDatentyp"Date" umgehen.
 
R

rh-spirit

Gast
Schade, ich hatte es doch gefunden, den Zeitzonentyp="CET".
Dieser gibt die Zeit ohne Sommerzeit aus.
01:00 ist 01:00
03:00 ist 03:00
ABER: In der Umstellungsphase gibt es auch hier Probleme:
02:15 ist 03:15.
Somit bin ich wieder am Ursprung meines Problems, daß wieder doppelter 03:xx Uhrzeiten auftreten, da er 02:xx umformatiert, da diese nicht "existieren".

Was soll ich denn nun machen ??

ICH HASSE WZ&SZ Umstellung!!!!!!!!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
ARadauer JDBC ResultSet schließen? Datenbankprogrammierung 4
J jdbc ResultSet types Datenbankprogrammierung 5
S Tabelle updaten wenn ResultSet aus JDBC-Quelle Datenbankprogrammierung 2
E JDBC, ForwardOnly bei ResultSet nach Uebergabe Datenbankprogrammierung 4
OnDemand JDBC Client Spring: Pool läuft voll Datenbankprogrammierung 6
B SQLite + jdbc + IntelliJ-Consumer = "No suitable driver found..." Datenbankprogrammierung 15
J PC-Start Problem JDBC Connection Datenbankprogrammierung 10
N JDBC SQLITE und Cascading Datenbankprogrammierung 2
D Asynchrone Aufrufe mit jdbc Datenbankprogrammierung 5
Edin JDBC Hilfe Datenbankprogrammierung 2
H JDBC Tabellen ausgeben Datenbankprogrammierung 8
Husamoli345 JSF-JDBC Verbindung Crud Datenbankprogrammierung 15
G MySQL JDBC Metadaten auslesen aus .accdb -> Primärschlüssel manchmal erkannt manchmal nicht Datenbankprogrammierung 3
N Java, sql, jar, JDBC-Treiber in Classpath Datenbankprogrammierung 8
O Create Table per JDBC Fehler: ORA-00922 Datenbankprogrammierung 4
J JDBC anschaulich präsentieren Datenbankprogrammierung 2
Thallius MySQL JDBC auf Linux Server zu mySQL DB auf anderem Linux Server wirft Access denied Datenbankprogrammierung 5
ralfb1105 Oracle JDBC Debugging Datenbankprogrammierung 8
Z [JDBC][MYSQL] Access denied Datenbankprogrammierung 7
Thallius MySQL jdbc schließt Verbindung nach vielen Request von selber Datenbankprogrammierung 8
B MySQL JDBC Kommentarfilter Datenbankprogrammierung 4
Aruetiise MySQL Name JDBC Drive finden Datenbankprogrammierung 4
E Sqlite-jdbc Mitliefern Datenbankprogrammierung 4
R jdbc-Zugriff Nicht erlaubt ? Datenbankprogrammierung 16
S probleme mit dem jdbc treiber Datenbankprogrammierung 1
Thallius MySQL Merkwürdiges JDBC Verhalten bei VPN Verbindung. Datenbankprogrammierung 7
O JDBC Daten in zwei Tabellen mit zwei foreach-Schleifen einfügen (insert into) Datenbankprogrammierung 1
F MySQL JDBC Problem Datenbankprogrammierung 5
C JDBC und SQLite Datenbank Datenbankprogrammierung 8
looparda SQLite Active JDBC Abstraktion Datenbankprogrammierung 2
J JDBC SQL Statement mit Parameter Datenbankprogrammierung 7
S JDBC PreparedStatement durchiterieren Datenbankprogrammierung 6
J RESTServie + JDBC + No suitable driver found for jdbc Datenbankprogrammierung 4
KaffeeFan JDBC/ODBC-Bridge entfernt Datenbankprogrammierung 4
S sun.jdbc.odbc.JdbcOdbcDriver wird nicht gefunden Datenbankprogrammierung 2
J Fehlende DatenbankView nach einbeziehen von JDBC Datenbankprogrammierung 3
A Mit JDBC auf postgreSQL Datenbank zugreifen Datenbankprogrammierung 5
C PostgreSQL JDBC + PostgreSQL: getLong liefert 0 statt NULL Datenbankprogrammierung 2
flenst111 SQL-Statement Wie konfiguriert man JDBC-Connect.richtig, damit es bei riesigen Tabs keinen Speicherüberlauf gibt? Datenbankprogrammierung 1
M JDBC Tabellen mit Boolean Spalten können nicht erstellt werden. DB Updaten - wie? Datenbankprogrammierung 6
S JDBC mit Postgres DB connecten Datenbankprogrammierung 3
A Eine MySQL Zeile mit JDBC löschen Datenbankprogrammierung 5
D JDBC - Verständnisfrage Datenbankprogrammierung 2
C Tabelle erstellen mit Apache JDBC-Util Datenbankprogrammierung 1
L Conversion-Error bei JDBC Date Literals Datenbankprogrammierung 3
X MySQL DB-verbindung ohne JDBC/ODBC Datenbankprogrammierung 1
F sun.jdbc.odbc.jdbcodbcdriver wird nicht gefuden Datenbankprogrammierung 3
J Keine Verbindung zu MSSQL DB mit JDBC Datenbankprogrammierung 3
U JDBC prepaird Statements Datenbankprogrammierung 4
B MySQL JDBC Zugriff auf entfernt Datenbank, fehlende Rechte Datenbankprogrammierung 2
Q MySQL JDBC-Treiber Problem Datenbankprogrammierung 2
R Transaktionen von mehreren Anwendungen aus - JDBC Datenbankprogrammierung 3
N MySQL com.microsoft.sqlserver.jdbc.SQLServerException: Die Verbindung wurde geschlossen. Datenbankprogrammierung 1
N JDBC: rollback() bei Exception geht nicht!? Datenbankprogrammierung 1
C Dateipfad des jdbc Treibers Datenbankprogrammierung 2
G JDBC Connect nur über SID fehlerfrei möglich Datenbankprogrammierung 2
R Oracle jdbc Zugriff auf Oracle Datenbankprogrammierung 2
T JDBC Fehler Datenbankprogrammierung 2
J JDBC via Singleton Datenbankprogrammierung 12
Z PostgreSQL JDBC mit Postgresql Datenbankprogrammierung 2
B No suitable driver found for jdbc:oracle:thin:@$HOST:$PORT:$SID Datenbankprogrammierung 7
K JDBC via Netzwerk Datenbankprogrammierung 4
B JDBC Connection Fehler Datenbankprogrammierung 8
K JDBC- In Java "stored procedure" erstellen für DB2,OracleSql ... Datenbankprogrammierung 3
J JDBC in Library|"Treiber konnte nicht geladen werden"" Datenbankprogrammierung 2
B JDBC-Connection: Data source name too long Datenbankprogrammierung 3
D JDBC insert mit select abfrage Datenbankprogrammierung 5
A JDBC Prepared Statement Autoincrement Datenbankprogrammierung 3
H JDBC prüfen ob Table existiert Datenbankprogrammierung 3
crashfinger jdbc-connection mit jre7 funktioniert nicht Datenbankprogrammierung 5
0 JDBC Oracle Verbindungsaufbau Datenbankprogrammierung 6
Q Oracle Linux: ClassNotFoundException: oracle.jdbc.driver.OracleDriver Datenbankprogrammierung 6
B JDBC MySQL Statement Datenbankprogrammierung 3
F Oracle Oracle JDBC Anbindung unter Glassfish 3.1.2 Datenbankprogrammierung 3
V PostgreSQL JDBC Treiber fehlt Datenbankprogrammierung 6
Y JDBC - Datenbankabfrage Webserver Datenbankprogrammierung 4
C JDBC Datenbank funktioniert nicht Datenbankprogrammierung 7
C JDBC , JDO oder JPA Datenbankprogrammierung 17
J MySQL Datenbank konfigurieren, JDBC, MySQL oder Hibernate Datenbankprogrammierung 2
P JDBC Verbindung zur DB klappt nicht Datenbankprogrammierung 6
J Java - JDBC Verbindung zur Datenbank nicht möglich Datenbankprogrammierung 10
K JDBC Buch kaufen? Datenbankprogrammierung 3
K Hibernate vs. JDBC Datenbankprogrammierung 4
K JDBC Driver not found Datenbankprogrammierung 10
GianaSisters Per JDBC auf Microsoft SQL 2005 Datenbankprogrammierung 24
S ich brauche tipps für JDBC Datenbankprogrammierung 4
Paristick MSSQL - JDBC Exception beim Registrieren Datenbankprogrammierung 5
S Applet stucks at SQL Connection (jTDS JDBC) Datenbankprogrammierung 15
R MySQL Voraussetzungen für eine erfolgreiche Datenbankanbindung mittels JDBC Datenbankprogrammierung 2
c_sidi90 JDBC Oracle Connection schlägt fehl Datenbankprogrammierung 2
J jdbc-dataSource in Klassen nutzen Datenbankprogrammierung 2
H Rechnen in Datenbanken - JDBC Mittel der Wahl? Datenbankprogrammierung 32
K MySQL JDBC - Access Datenbank - unbekannter TabellenName Datenbankprogrammierung 4
D JDBC Fehler beim laden der nativen Bibliothek db2jcct2 Datenbankprogrammierung 9
J MySQL Verbindung über JDBC scheitert immer Datenbankprogrammierung 2
I Master/Detail Tabellen mit JDBC und Swing Datenbankprogrammierung 10
S MSSQL JDBC "Driver class not found" Datenbankprogrammierung 9
E Datenbankverbindung mit Oracle JDBC und Eclipse Plugin Quantum db Datenbankprogrammierung 2
ruutaiokwu jdbc connection als singleton Datenbankprogrammierung 11
J MySQL Löschen von Rows mit JDBC Datenbankprogrammierung 9

Ähnliche Java Themen


Oben