Ganymed Geschrieben 11. Juni 2004 Geschrieben 11. Juni 2004 Hallo zusammen, ich sitze hier grad und bekomme partout kein Ergebnis. Und zwar möchte ich in einer Tabelle Datensätze zählen, die ein bestimmtes Datum haben. Ich bekomme aber kein Ergebnis. Die Daten sind als "TT.MM.JJJ HH.MM.SS' gesichert (hoffe, das schreibt man so ) Meine Abfrage lautet: SELECT COUNT(*) FROM tabelle WHERE id=352 AND datum LIKE('09.06.2004%'); Was mache ich falsch? Gruß Ganymed
robotto7831a Geschrieben 11. Juni 2004 Geschrieben 11. Juni 2004 Hallo, Oralce erkennt dein Datum nicht als Datum. Probier mal folgendes: SELECT COUNT(*) FROM tabelle WHERE id=352 AND datum =to_date('09.06.2004', 'DD.MM.YYYY'); Frank
Ganymed Geschrieben 11. Juni 2004 Autor Geschrieben 11. Juni 2004 Hallo, Oralce erkennt dein Datum nicht als Datum. Probier mal folgendes: SELECT COUNT(*) FROM tabelle WHERE id=352 AND datum =to_date('09.06.2004', 'DD.MM.YYYY'); Frank Hmm... geht leider immer noch nicht Ergebns ist 0... Verstehe ich nicht. Das Feld ist auch vom Datentyp date, wenns hier irgendwie weiterhilft... :confused:
robotto7831a Geschrieben 11. Juni 2004 Geschrieben 11. Juni 2004 Ich habe mir schon gedacht, dass es ein Date Feld ist. Dann probier mal: SELECT COUNT(*) FROM tabelle WHERE id=352 AND datum =to_char('09.06.2004', 'DD.MM.YYYY'); Frank
Ganymed Geschrieben 11. Juni 2004 Autor Geschrieben 11. Juni 2004 Ich habe mir schon gedacht, dass es ein Date Feld ist. Dann probier mal: SELECT COUNT(*) FROM tabelle WHERE id=352 AND datum =to_char('09.06.2004', 'DD.MM.YYYY'); Frank Hallo, ich bekomme dann die Fehlermeldung "invalid number"... Irgendwas ist doch das faul, oder? :confused: Ich habs auch schon mit instr und substr versucht...
robotto7831a Geschrieben 11. Juni 2004 Geschrieben 11. Juni 2004 Eigentlich sollte das gehen. Ich habe jetzt auch gerade kein Oracle hier um das zu testen. Frank
Ganymed Geschrieben 11. Juni 2004 Autor Geschrieben 11. Juni 2004 Eigentlich sollte das gehen. Ich habe jetzt auch gerade kein Oracle hier um das zu testen. Frank Hehe... hab den ganzen Kram nochmal eingegeben. (dein zweites Beispiel). Hab zwar immer noch ne Fehlermeldung jetzt aber "invalid character" für exakt das Gleiche Statement... Kapier ich nicht...
DerMatze Geschrieben 11. Juni 2004 Geschrieben 11. Juni 2004 Hmm, vielleicht hilft dir das: AND TRUNC(datum) = TO_DATE('11.JUN.04', 'DD.MON.YYYY')
Ganymed Geschrieben 11. Juni 2004 Autor Geschrieben 11. Juni 2004 Hmm, vielleicht hilft dir das: AND TRUNC(datum) = TO_DATE('11.JUN.04', 'DD.MON.YYYY') Hmmm... auch 0 als Ergebnis. Wenn ich anstatt dem to_date ein to_char eingebe, dann hab ich wieder die Fehlermeldung... Ein Datum hat das Format (habs jetzt mal aus der DB rauskopiert) 09.06.2004 08:52:08 Ist doch, das ,was ich geschrieben hatte, oder?
-roTekuGeL- Geschrieben 11. Juni 2004 Geschrieben 11. Juni 2004 SELECT * FROM Tabelle where date_summarised >= to_date('20.10.2002', 'DD.MM.YYYY'); also die Abfrage hat bei mir bis jetzt immer funktioniert...
Ganymed Geschrieben 11. Juni 2004 Autor Geschrieben 11. Juni 2004 SELECT * FROM Tabelle where date_summarised >= to_date('20.10.2002', 'DD.MM.YYYY'); also die Abfrage hat bei mir bis jetzt immer funktioniert... date_summarised invalid identifier... Was heißt das überhaupt?
-roTekuGeL- Geschrieben 11. Juni 2004 Geschrieben 11. Juni 2004 date_summarised invalid identifier... Was heißt das überhaupt? da musst du schon dein feld reinsetzten... also den feldnamen, sry und dann halt noch das > weg
Ganymed Geschrieben 11. Juni 2004 Autor Geschrieben 11. Juni 2004 da musst du schon dein feld reinsetzten... also den feldnamen, sry und dann halt noch das > weg Irgendwie weiß ich nicht wohin mit dem summarised... Mit dem "_" wäre das ja ein neues Feld - und da hat der Compiler Recht - invalid identyfier...
robotto7831a Geschrieben 11. Juni 2004 Geschrieben 11. Juni 2004 Du mußt date_summarised durch deinen Feldnamen ersetzen. Frank
-roTekuGeL- Geschrieben 11. Juni 2004 Geschrieben 11. Juni 2004 Irgendwie weiß ich nicht wohin mit dem summarised... Mit dem "_" wäre das ja ein neues Feld - und da hat der Compiler Recht - invalid identyfier... date_summarised war mein feldname... ersetz das ganze einfach durch deinen feldnamen...
johnhaltonx Geschrieben 11. Juni 2004 Geschrieben 11. Juni 2004 Welchen Client benutzt du denn? sqlplus ? Wenn ja dann poste doch mal den code abschnitt aus dem SQLPLUS bsp: SCHEELEC@AZUBIDB.WORLD> create table test (datum date); Table created. Elapsed: 00:00:00.01 SCHEELEC@AZUBIDB.WORLD> insert into test values ('09-06-2004 12:12:33'); 1 row created. Elapsed: 00:00:00.00 SCHEELEC@AZUBIDB.WORLD> commit; Commit complete. Elapsed: 00:00:00.00 SCHEELEC@AZUBIDB.WORLD> select * from test; DATUM ------------------- 09.06.2004 12:12:33 Elapsed: 00:00:00.00 SCHEELEC@AZUBIDB.WORLD> spool off
Ganymed Geschrieben 11. Juni 2004 Autor Geschrieben 11. Juni 2004 Ich benutze PL/SQL Developer @Kügelchen Funkt leider auch nicht -> Ergebnis 0 Muss aber was geben
johnhaltonx Geschrieben 11. Juni 2004 Geschrieben 11. Juni 2004 Ich glaube ich hab den Fehler... du versuchst mit einem Datum-datentyp reguläre Ausdrücke zu verwenden z.b. '%' du willst alle daten vom 09.06.2004 haben select count(*) from tabelle where id =352 and datum between '08-06-2004 23:59:59' AND '09-06-2004 23:59:59'; SCHEELEC@AZUBIDB.WORLD> select count(*) from test where datum between '08-06-2004 23:59:59' AND '09-06-2004 23:59:59'; COUNT(*) ---------- 1 Elapsed: 00:00:00.00 SCHEELEC@AZUBIDB.WORLD>
mme Geschrieben 14. Juni 2004 Geschrieben 14. Juni 2004 Das was DerMatze oben geschrieben hat war schon ganz richtig. Das zeigt schon alleine das du da keine Fehlermeldung bekommen hast, sondern 0 als ergebnis. Allerdings hat er einen Fehler gemacht. Er hat als Jahreszahl 04 angegeben. Hinten aber definiert das er eine vierstellige Jahreszahl hat.... Versuch es so: Und wenn du dann immer noch 0 bekommst bin ich mir sicher, das es einfach keine Daten für den entsprechenden Tag gibt... SELECT COUNT(*) FROM tabelle WHERE id=352 AND TRUNC(datum) = TO_DATE('11.JUN.2004', 'DD.MON.YYYY') Grüße mme
mme Geschrieben 14. Juni 2004 Geschrieben 14. Juni 2004 select count(*) from tabelle where id =352 and datum between '08-06-2004 23:59:59' AND '09-06-2004 23:59:59'; Selbst wenn das funktioniert rate ich dir so davon ab. Solche statements sind doch dämlich... Welches is tder Monat und welches ist der Tag? Funktioniert hier vielleicht (?) aber wehe du setzt das statement in einer anderen Umgebung ab, wo das andere Datumsformate eingestellt sind..... Ich würde immer so lästige Funktionen wie to_Date() usw. benutzen....
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden