DB2: Datum in bestimmtes Format umwandeln?!

Hi,

laut referenz, probier mal bitte:

SQL:
SELECT SUM(sales) FROM sales WHERE sales_date = DATE('2007-12-31')

Habe ich http://www.mayeruli.de/db2/datum.html gefunden. Sieht mir nach ANSI Standart aus, das sollte klappen.
Wenn das obere Beispiel nicht klappt poste bitte die Tabellen Definition, also Dein DDL (Data definition language), damit werden Tabellen und Objecte in Datenbanken erzeugt, z.B. CREATE TABLE, GRANT SELECT... etc.

Die Idee von Sphinx-Flash ist gut, geht aber nur wenn Dein Datum als String in der Tabelle abgelegt wurde.

Lieben Gruß
 
hallo!

beide abfragen funktionieren zwar, allerdings ist das datumsformat falsch...es soll 31-Dec-2007 abgefragt werden!

in der datenbank sample von db2 gibt es die tabelle sales mit der spalte sales_date und dem datentyp date...

ich muss es also irgendwie schaffen, das datum umzuwandeln...habe es mit CHAR(sales_date,xxx) versucht, aber leider gibt es da nur vorgegebene Formate wie z.B. USA; EUR, ISO, LOCAL aber leider kann ich es nicht selbst bestimmen...

ist das wirklich so kompliziert?
 
Hallo Curlyconny,

ich glaube, es gibt momentan zwei große Probleme bei Deiner Frage:

Zum einen wird es wahrscheinlich wenige geben, die sich mit IBM DB2 sehr gut auskennen. Aber dazu haben wir ja Links gegeben. Dort kann man doch noch einiges nachlesen.

Zum besseren Verständnis: SQL und Datenbanksysteme sind nicht immer gleich. Die häufigsten sind MySQL, Access und Oracle. Zwischen diesen DB-Systemen gibt es schon ganz wesentliche Unterschiede in den SQL-Referenzen.

Das nächste Problem ist, daß noch immer nicht richtig klar ist, um was es überhaupt geht.

Du hast zuletzt geschrieben, daß die Abfrage, die ich notiert hatte, sowie die von planb2000 funktioniert haben, aber die das Datum anders abgefragt werden soll... :confused:

Wenn doch die Abfrage funktioniert, wieso muss ich dann daran etwas ändern?

Vielleicht kommen wir doch noch zum Ziel: Lach...

Du hast eine DB2 Datenbank!
In dieser DB2 Datenbank ist eine Tabelle sales!
In dieser Tabelle sales gibt es unter anderem die Felder sales und sales_date!
Das Feld sales_date ist als Datum formatiert.

Die Abfrage
SELECT SUM(sales) FROM sales WHERE sales_date = '2007-12-31'
funktioniert.

Das stimmt soweit alles, hoffe ich: Fragend guck

Gibt diese Abfrage Dir die richtige Summe aus?

Wenn ja, weiß ich nicht warum das Datum anders formatiert sein soll?

Irgendwie scheine ich auf einem ganz großen Schlauch zu stehen und komme nicht davon runter... :suspekt:
 
hallo!

du hast das alles richtig verstanden.

die abfrage

SELECT SUM(sales) FROM sales WHERE sales_date = '2007-12-31'

funktioniert zwar und liefert ein ergebnis...aber sie bringt mir nichts, da das datum, das gesucht ist NICHT im format 2007-12-31 übergeben wird, sondern im format 31-dec-2007

ich erhalte bei folgender abfrage einen fehler:
SELECT SUM(sales) FROM sales WHERE sales_date = '31-Dec-2007'

weil ich ein datum mit einem string vergleiche...d.h. 31-Dec-2007 muss in ein datumsformat umgewandelt werden...und genau das ist mein problem...ich weiß nicht wie
 
Planb2000 hatte doch diese Date Funktion angeschnitten... das t auch nicht?

SELECT SUM(sales) FROM sales WHERE sales_date = Date('31-Dec-2007')

oder daß Du bereits vor dem SQL String in Deiner Programmiersprache das Datumsformat entsprechend umwandeln kannst? Oder läuft die gesamte Programmierung in DB2?
 
bei dieser abfrage erhalte ich folgende fehlermeldung:

------------------------------ Eingegebene Befehle ---------------------------
SELECT SUM(sales) FROM sales WHERE sales_date = Date('31-Dec-2007');
------------------------------------------------------------------------------
SELECT SUM(sales) FROM sales WHERE sales_date = Date('31-Dec-2007')
SQL0180N Die Syntax der Darstellung eines Datums-/Zeitwerts als Zeichenfolge
ist falsch. SQLSTATE=22007

SQL0180N Die Syntax der Darstellung eines Datums-/Zeitwerts als Zeichenfolge ist falsch.

Erläuterung:

Die Zeichenfolgendarstellung eines Datums-, Zeit- oder Zeitmarkenwerts
stimmt nicht mit der Syntax des angegebenen oder implizierten Datentyps
überein.

Die Anweisung kann nicht verarbeitet werden.

Benutzeraktion:

Stellen Sie sicher, dass die Syntax des Datums-, Zeit- oder
Zeitmarkenwerts der Syntax des betreffenden Datentyps entspricht. Ist
die Zeichenfolge nicht als Datums-, Zeit- oder Zeitmarkenwert gedacht,
achten Sie bei ihrer Verwendung darauf, dass kein solcher Datentyp
impliziert wird.

Benutzer föderierter Systeme: Der Fehler ist möglicherweise auf ein
Problem bei der Datums- bzw. Zeitdarstellung der Datenquelle
zurückzuführen. Falls es sich um eine unbekannte Ursache handelt,
stellen Sie fest, in welcher Datenquelle die Anforderung fehlgeschlagen
ist (die Vorgehensweise wird im Handbuch 'Fehlerbehebung' beschrieben),
und prüfen Sie die Einschränkungen für die Datums- bzw. Zeitdarstellung
der betreffenden Datenquelle.

sqlcode: -180

sqlstate: 22007
 
Dachte ich mir schon fast... :suspekt:

Deshalb die nächste Frage:
Wo steht der SQL Befehl?
Ist das innerhalb der DB2?
Oder greifst Du mit einer externen Sprache auf die DB zu?
Wenn ja, welche Sprache?
Wenn nein:
Ist das nur ein Abfrage-Formular innerhalb der DB2
oder ist es innerhalb der DBA-Skriptsprache?
Wenn ja, dann müßte man prüfen, wie man in der DBA-Skriptsprache das Datum passend für den SQL String umformatiert und dann den SQL String mit der Datumsvariablen verknüpft.

Ich vermute nämlich, daß es innerhalb des SQL-Strings für Dein Datumsformat keine Möglichkeit in DB2 gibt. Deshalb meine Befürchtung: das Datum wird vorher schon umformatiert werden müssen.
 
Zurück