php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 28.11.2008, 13:24  
Neuer Benutzer
 
Registriert seit: 28.11.2008
Beiträge: 5
MarcusG befindet sich auf einem aufstrebenden Ast
Standard DB2: Timestamp zu ungenau

Hallo php.de Community,

ich habe bereits die Such-Funktion benutzt, aber keinen passenden Eintrag gefunden.

Ich möchte über PHP (Version 5.2.6) in DB2 (Version 8) eine Spalte vom Typ Timestamp mit dem SQL "Befehl" CURRENT_TIMESTAMP mit den aktuellen Timestamp versehen.
Das ist soweit kein Problem, jedoch geht der Timestamp nur bis auf Sekunden und ist somit für mich (ich benötige ihn zum Zeitvergleich und ja ich weiß das es microtime() gibt) zu ungenau.

Ich habe bereits im Internet gewühlt und eigentlich sollte doch Timestamp bis auf Mikrosekunden genau gehen oder?

Denn wenn ich den Wert der Spalte auslese, hängt mir der Browser Nullen an den in die Tabelle eingtragenen Wert und füllt so den zu kurzen Timestamp auf.

Ich weiß nicht ob das ein reines DB2 Problem ist und ich hier falsch bin, oder ob das Problem mit PHP zusammen hängt.

Ich hoffe jemand weiß Rat und kann mir helfen.

Gruß
Marcus
MarcusG ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 28.11.2008, 13:28  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Hmm, im mysql! Manual finde ich das:
Zitat:
SELECT MICROSECOND('1997-12-31 23:59:59.000010');
Möglicherweise ist im selben Format auch ein INSERT möglich.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 28.11.2008, 13:33  
Neuer Benutzer
 
Registriert seit: 28.11.2008
Beiträge: 5
MarcusG befindet sich auf einem aufstrebenden Ast
Standard

Leider benutze ich kein mysql, sondern (wie ja im Titel und im Text steht) DB2.
Ich gehe davon aus das dein Code mir NUR die Mikrosekunden liefert oder?
Ich möchte aber gerne das ganze Datum, samt Zeit bis auf Mirkosekunden genau.
Eigentlich das, was Timestamp tuen sollten.

[edit] Leider schmeißt mir MICROSECONDS Fehler, was aber nachdem ich nochmal darüber nachgedacht habe doch eine gute Lösung gewesen wäre.
Code:
[IBM][CLI Driver][DB2/NT] SQL0440N Es wurde keine berechtigte Routine "MICROSECONDS" des Typs "FUNCTION" mit kompatiblen Argumenten gefunden. SQLSTATE=42884 SQLCODE=-440
oder MICROSECONDS ohne Argumente
Code:
[IBM][CLI Driver][DB2/NT] SQL0206N "MICROSECONDS" ist in dem verwendeten Kontext ungültig. SQLSTATE=42703 SQLCODE=-206
[/]

Geändert von MarcusG (28.11.2008 um 13:39 Uhr).
MarcusG ist offline   Mit Zitat antworten
Alt 28.11.2008, 13:35  
Erfahrener Benutzer
 
Benutzerbild von phpdummi
 
Registriert seit: 06.06.2008
Beiträge: 1.631
PHP-Kenntnisse:
Anfänger
phpdummi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

DB2 Basics: Fun with Dates and Times
__________________
"Nobody is as smart as everybody" - Kevin Kelly
— The best things in life aren't things
phpdummi ist offline   Mit Zitat antworten
Alt 28.11.2008, 13:39  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
Leider benutze ich kein mysql, sondern (wie ja im Titel und im Text steht) DB2.
Das ist mir bewußt, daher das -mysql! - in meiner Antwort.

Zitat:
Ich gehe davon aus das dein Code mir NUR die Mikrosekunden liefert oder?
Zitat:
Möglicherweise ist im selben Format auch ein INSERT möglich.
Meine Vermutung war, dass das Format '1997-12-31 23:59:59.000010' auch für Date-Field-INSERTs verwendbar ist.


Die verlinkte Quelle legt dies auch nahe:
Zitat:
TIMESTAMP ('2002-10-20-12.00.00.000000')
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 28.11.2008, 13:46  
Neuer Benutzer
 
Registriert seit: 28.11.2008
Beiträge: 5
MarcusG befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von phpdummi Beitrag anzeigen
Den Artikel kenne ich bereits, jedoch konnte ich dort nichts finden was mir bei meinem Problem helfen konnte.

@nikosch:
Hast du mein edit im Post gesehen?
Ich habe das noch getestet und nachträglich reingeschrieben.

Aus dem oberen Artikel geht ja auch hervor das Timestamp Mirkosekunden zählt, jedoch werden diese bei mir weder eingetragen, noch in DB2 selbst angezeigt (im Browser werden diese, wahrscheinlich vom PHP aus, als Nullen dargestellt).
MarcusG ist offline   Mit Zitat antworten
Alt 28.11.2008, 13:49  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Zitat:
Zitat von MarcusG Beitrag anzeigen
Den Artikel kenne ich bereits, jedoch konnte ich dort nichts finden was mir bei meinem Problem helfen konnte.
Mit DB2 kenne auch mich nicht aus, aber im Artikel steht zum Beispiel
Zitat:
And here is an example of how to get the current timestamp with the microseconds portion reset to zero:


CURRENT TIMESTAMP - MICROSECOND (current timestamp) MICROSECONDS
Das klingt für mich so, als wenn CURRENT TIMESTAMP ansonsten die Microsekunden schon liefert.
Das ist tatsächlich nicht der Fall bei Dir?


edit: Der Artikel bezieht sich auf
Zitat:
For example, from the DB2 Command Line Processor (CLP), the following SQL statements reveal similar information:
Hast Du das Ganze auch mal über diese Applikation ausgetestet?
David ist offline   Mit Zitat antworten
Alt 28.11.2008, 13:50  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Nein, in der Tat nicht. Ich meinte das aber auch so:

INSERT INTO table (name, datum) VALUES ('Marcus' , '2002-10-20-12.00.00.012030')

Zitat:
Das klingt für mich so, als wenn CURRENT TIMESTAMP ansonsten die Microsekunden schon liefert.
Ich vermute auch eher, dass diese Daten nur nicht dargestellt werden.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 28.11.2008, 13:59  
Neuer Benutzer
 
Registriert seit: 28.11.2008
Beiträge: 5
MarcusG befindet sich auf einem aufstrebenden Ast
Standard

Ich habe auch bei meinem Test mit MICROSECOND einen Fehler gemacht.
Ich habe statt microsecond - microsecondS geschrieben.

Nun erhalte ich folgenden Fehler für MICROSECOND (CURRENT_TIMESTAMP):
Code:
[IBM][CLI Driver][DB2/NT] SQL0408N Ein Wert ist mit dem Datentyp seines Zuordnungsziels nicht kompatibel. Der Name des Ziels ist "UNKENNTNIS_AB". SQLSTATE=42821 SQLCODE=-408
Also irgendwas stimmt das nicht mit der Datenbank...
MarcusG ist offline   Mit Zitat antworten
Alt 28.11.2008, 14:08  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Welchen Typ hat UNKENNTNIS_AB gleich nochmal? Und wie sieht die Abfrage im Moment aus?

MICROSECOND (CURRENT_TIMESTAMP) : Das wird Dir vermutlich eine Ganzzahl liefern. Ich dachte, Du wolltest den Zeitstempel samt Mikrosekunden haben?
David ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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 an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
SQL Timestamp (Sekunden stören) Reen_Sc Datenbanken 5 10.07.2008 16:22
Timestamp problem carter PHP Tipps 2008 2 04.06.2008 08:49
nur "jahr" aus timestamp abfragen lindner Datenbanken 3 29.03.2007 14:55
[Erledigt] Problem mit Datumsformat und Timestamp Datenbanken 3 09.02.2006 23:39
Timestamp und IF Bedingung in einer Abfrage Datenbanken 1 20.01.2006 08:41
timestamp in mysql Aris Sung PHP-Fortgeschrittene 9 22.11.2005 17:54
timestamp -> x Tage zurück Unbekanntes_Pferd PHP Tipps 2005-2 1 11.10.2005 14:23
mit mktime wird der Timestamp nicht richtig erzeugt PHP Tipps 2005-2 2 09.10.2005 20:57
timestamp heute PHP Tipps 2005 10 18.05.2005 16:01
Problem: Sortierung von Statistiken nach Timestamp pixelcut PHP-Fortgeschrittene 2 02.03.2005 14:51
Datum aus Datenbank (TIMESTAMP) erzeugen PHP Tipps 2005 3 13.02.2005 01:19
Timestamp? suter Datenbanken 2 30.08.2004 15:44
timestamp abfrage problem Datenbanken 5 29.08.2004 18:23
Datum mit Timestamp vergleichen? PHP Tipps 2004 1 28.08.2004 03:06
timestamp PHP-Fortgeschrittene 4 26.08.2004 19:29

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
db2 timestamp, db2 timestamp vergleichen, timestamp db2, db2 datumsformat, db2 current timestamp, sqlstate=42703, db2 datum, sql0206n, sqlcode 206, php db2 timestamp, db2 zeitstempel, db2 timestamp format, db2 sql timestamp, sqlstate 42821, db2 timestamp abfragen, sqlstate=42821, ist in dem verwendeten kontext ungültig, sqlstate 42703, ibm db2 timestamp, verwendeten kontext ungültig sql

Alle Zeitangaben in WEZ +2. Es ist jetzt 03:46 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum