Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

  • Autor
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:

  • Autor
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...

  • Autor
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" :D

für exakt das Gleiche Statement...

Kapier ich nicht...

Hmm, vielleicht hilft dir das:

AND TRUNC(datum) = TO_DATE('11.JUN.04', 'DD.MON.YYYY')

  • Autor
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?

SELECT * FROM Tabelle where date_summarised >= to_date('20.10.2002', 'DD.MM.YYYY');

also die Abfrage hat bei mir bis jetzt immer funktioniert...

  • Autor
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?

date_summarised invalid identifier...

Was heißt das überhaupt?

da musst du schon dein feld reinsetzten... also den feldnamen, sry :rolleyes:

und dann halt noch das > weg :rolleyes:

  • Autor
da musst du schon dein feld reinsetzten... also den feldnamen, sry :rolleyes:

und dann halt noch das > weg :rolleyes:

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...

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...

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

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>

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

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....

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.