Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Antwort
 
Themen-Optionen
Alt 06.03.2006, 12:00   Nach oben    #1
Benutzer
 
Registriert seit: 13.01.2006
Ort: Hannover
Beiträge: 48
Standard SQL Date/Timestamp verwenden

Ich wollte in einer SQl Tabelle (mysql) ein feld mit dem Wert timestamp oer date haben, muss ich noch sehn was besser ist, aber das selbe Prinzip denk ich ma.
So nun wird autoamtisch das Datum in folgender Form gespeichert: 2006-03-02 16:44
Nun bin ich auf der Suche nach einer Klasse die mir Tag/Monat/Jahr/Stunde/Sekunde ordentlich ausließt.
Ich hab es einmal mit dem Objekt Timestamp versucht, doch der gibt mir bei diesem aufruf das jahr 106 aus, obwohl es ja 2006 sein müsste Oo

Code:
timestamp time = erg.getTimestamp("datum"); // Datum aus der Datenabank
System.out.println(time.getYear());
js-mueller ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.03.2006, 12:21   Nach oben    #2
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.091
Standard

Code:
java.sql.Date date = erg.getDate("datum");
Könnte dein Freund sein.
pago ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.03.2006, 12:31   Nach oben    #3
Benutzer
 
Registriert seit: 13.01.2006
Ort: Hannover
Beiträge: 48
Standard

Ist das selbe Ergebnis, Timestamp/Date machen bei mir den selben Fehler, hab beides schon getestet, Der einzige unterschied ist ja nur das Timestamp die Zeit noch mit einbezieht
js-mueller ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.03.2006, 12:44   Nach oben    #4
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
Standard

Der Thread wurde verschoben, wegen ...
... Postings im falschen Forum. Bitte beim nächsten Mal darauf achten.,

verschoben
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.03.2006, 14:08   Nach oben    #5
Erfahrener Benutzer
 
Benutzerbild von JumperII
 
Registriert seit: 27.02.2006
Beiträge: 146
Standard

Hallo,

ich gehe mal davon aus, dass Du das Timestamp-Feld einfach mit dem Jahr 106 gefüllt hast. Dann stimmt es auch mit der Ausgabe

Prüf doch mal, wie Du das Timestamp Feld setzt. Bzw. mit welcher Methode. Alternativ kannst Du gerne mit dem Client oder einen php<db>admin reinschauen ...

gruß,
jumper, the II.
JumperII ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.03.2006, 14:20   Nach oben    #6
Benutzer
 
Registriert seit: 13.01.2006
Ort: Hannover
Beiträge: 48
Standard

Ich muss mal gestehen, da ich zufau bin mysql per Konsole zu steuern hab ich nen php server für phpMyAdmin drauf, ist einfach nen nettes tool.

In der Datenbank steht korrekt 2006-03-02
Die eingabe erfolgt automatisch wenn ich in phpMyAdmin nen neuen Beitrag erstelle.
js-mueller ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.03.2006, 14:25   Nach oben    #7
Erfahrener Benutzer
 
Benutzerbild von JumperII
 
Registriert seit: 27.02.2006
Beiträge: 146
Standard

getYear

public int getYear()
Deprecated. As of JDK version 1.1, replaced by Calendar.get(Calendar.YEAR) - 1900.

Returns a value that is the result of subtracting 1900 from the year that contains or begins with the instant in time represented by this Date object, as interpreted in the local time zone.

Returns:
the year represented by this date, minus 1900.
See Also:
Calendar
JumperII ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.03.2006, 14:26   Nach oben    #8
Erfahrener Benutzer
 
Benutzerbild von JumperII
 
Registriert seit: 27.02.2006
Beiträge: 146
Standard

Stimmt ... da war doch noch was gewesen .... Ich bin damals in beide Fallen nacheinander getappt

Gruß,
Jumper, the II.
JumperII ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.03.2006, 15:12   Nach oben    #9
Benutzer
 
Registriert seit: 13.01.2006
Ort: Hannover
Beiträge: 48
Standard

Super das Jahr geht nu wenn ich 1900 druff rechne, aber nu seh ich Tag geht ja auch nicht ^^

Und zwar bekomm ich diese Ausgabe 4.3.2006
obwohl in der Datenbank 2006-03-02 steht
da benutz ich jetzt getDay.
Irgendwie mag ich diese Datumsgeschichte net


edit:

Davon mal abgesehn, in der Doku steht bei vielen Funktionen " Verworfen in Version 1.1."
sollte man vieleicht etwas anderes verwenden?

Geändert von js-mueller (06.03.2006 um 15:37 Uhr).
js-mueller ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.03.2006, 18:29   Nach oben    #10
Erfahrener Benutzer
 
Benutzerbild von JumperII
 
Registriert seit: 27.02.2006
Beiträge: 146
Standard

Hallo,

Vielleicht geht es, wenn Du statt des timestamps die Infos aus Calendar liest:

Code:
import java.util.Calendar;
Calendar cal = Calendar.getInstance();
cal.setTime( timestamp);
cal.get( Calendar.YEAR);
cal.get( Calendar.MONTH);
cal.get( Calendar.DAY_OF_MONTH);
Ich bin mir nicht sicher, ob die veraltete Version es noch richtig macht. Version 1.1 ist lange lange her.

Gruß,
Jumper, the II.
JumperII ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.03.2006, 19:05   Nach oben    #11
Benutzer
 
Registriert seit: 13.01.2006
Ort: Hannover
Beiträge: 48
Standard

Astrein nun funktioniert alles so wie es soll, danke schön
js-mueller ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 09.03.2006, 14:31   Nach oben    #12
Benutzer
 
Registriert seit: 15.11.2005
Beiträge: 75
Standard

Zitat:
Zitat von js-mueller
Und zwar bekomm ich diese Ausgabe 4.3.2006
obwohl in der Datenbank 2006-03-02 steht
da benutz ich jetzt getDay.
Date#getDay() macht nicht das, was Du vermutest: wie in der API-Doku beschrieben, liefert getDay() genau wie Calendar.get( DAY_OF_WEEK) den Wochentag; die 4 steht für Donnerstag.

Du braucht hier Date#getDate(); das liefert - wie Calendar.get( DAY_OF_WEEK) - das Tagesdatum zwischen 1 und 31 zurück

@jumper: JDK 1.1 gibt es zwar schon lange, aber die APIs funktionieren trotzdem noch.
Murray ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.03.2006, 20:42   Nach oben    #13
Erfahrener Benutzer
 
Benutzerbild von JumperII
 
Registriert seit: 27.02.2006
Beiträge: 146
Standard

Hallo Murray,

das Problem ist, das Date#getDay mit der Version 1.0 gekommen ist und schon unter der Version 1.1 nicht mehr evrwendet werden sollte. Offensichtlich liegt in dieser Funktion ein netter (Jahr-2000?)-Bug bei der Berechnung des Monatstags vor, daher die abweichende Angabe

In sofern ist diese Funktion in klassisches Beispiel, dass man das Verwenden von veralteten Funktionen wirklich unterlassen sollte

Gruß,
Jumper, the II.
JumperII ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.03.2006, 21:20   Nach oben    #14
Erfahrener Benutzer
 
Benutzerbild von JumperII
 
Registriert seit: 27.02.2006
Beiträge: 146
Standard

So, jetzt können wir den Thread zumachen *kugel*

Zusammenfassung des Problems .... Wir alle haben nicht in die API-Beschreibbung geschaut .... Es ist kein wirkliches Problem. Der Ansatz, die Calender-Klasse zu verwenden ist richtig und m.E. langfrist sicherer.

Zu Date und der Methode getDay(). Diese Methode gibt den Wochentag aus. Und der ist immer etwas anderes als der Monatstag. Letzteres kann mit der Methode getDate() ausgelesen werden.

Im übrigen nutzt Date intern Calender, um die alten Funktionen zu realisieren ...

Also Asche auf mein Haupt
Gruß,
Jumper, the II.
JumperII ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.03.2006, 22:47   Nach oben    #15
Benutzer
 
Registriert seit: 15.11.2005
Beiträge: 75
Standard

Zitat:
Zitat von JumperII

das Problem ist, das Date#getDay mit der Version 1.0 gekommen ist und schon unter der Version 1.1 nicht mehr evrwendet werden sollte. Offensichtlich liegt in dieser Funktion ein netter (Jahr-2000?)-Bug bei der Berechnung des Monatstags vor, daher die abweichende Angabe
Das ist - mit Verlaub - Quatsch, das Verhalten ist von jeher dokumentiert und mitnichten ein Bug; ich halte das API von java.util.Data zwar auch nicht für besonders gelungen, aber fehlerhaft ist es nicht wirklich.

Der Grund, warum die Datumsfunktionen mit dem JDK 1.1 auf eine neue Basis gestellt wurden, war m.W. eher die Notwendigkeit der Internationalisierung; mit dem Calendar hat man hier ein deutlich mächtigeres Werkzeug zur Verfügung.

Die erweiterte Funktionalität erkauft man sich aber leider mit Performance-Nachteilen; allein die Instanziierung eines Calendars ist schon eine ziemlich "teuere" Operation. Ich behaupte daher, dass es durchaus Situationen geben kann, in denen man besser java.util.Date verwenden sollten

Zitat:
Insofern ist diese Funktion in klassisches Beispiel, dass man das Verwenden von veralteten Funktionen wirklich unterlassen sollte
Normalerweise sollte man wirklich versuchen, die als "deprecated" gekennzeichneten APIs durch die neueren APIs zu ersetzen; Deine Aussage kann ich aber in der Allgemeinheit nicht teilen.

Gruß,
Murray
Murray ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are An
Refbacks are Aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Klasse in Klasse verwenden? goelliboy PHP-Programmierung 12 07.09.2007 11:43
Adapter für Zigarettenanzünder, Notebook als alternatives Radio im Auto verwenden Ben Gesuche 19 08.08.2007 11:17
Abkürzung des Wochentags in SQL, vgl. strftime in PHP Ben Datenbanken 4 12.04.2007 16:51
Zugriff auf Wert des vorhergenden Datensatzes in einer SQL Abfrage Jay Datenbanken 5 17.07.2006 15:25
Unicode vom SQL Server 2000 auslesen argos Datenbanken 5 25.05.2005 22:20


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:36 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.7.3, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0) und vBSEO.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44