Zum Inhalt springen

SQL-Statements auf Oracle


Fuldaer_Bub

Empfohlene Beiträge

Hallo....

ich bin z.Zt. an einem kleinen VB-Programm zu Gange, welches über einen ODBC-Treiber auf eine Oracle-Datenbank zu greift. Die Daten einer Tabelle werden mit SQL-Statements "gemacht" ( gutes deutsch..*gg*).

Ich habe nun das Problem, das ich den jeweils aktuellen Monat bearbeiten will.

Mit SELECT * FROM irgendwo WHERE

month(feld_datum) = month(now())

AND year(feld_datum) = year(now())

funkt das nicht.

Hat jemand ne Idee?

:confused: :confused: :confused:

Danke schonmal !

Grüße

Olli

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Peregrin..

habe das mal probiert, aber funkt das noch nicht bei mir.

Ich habe zum Testen mal die Statements in MYSQL gehackt, leider negativ.

Hier meine Statements :

SELECT x.a, x.b, x.c, x.d, x.e, x.e

FROM x

WHERE to_char(x.a, 'MMYYYY') = to_char(sysdate, 'MMYYYY') And month(x.a)= month(now())

ORDER BY x.c

Oder ist es so trotzdem falsch ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von Fuldaer_Bub

Ich habe nun das Problem, das ich den jeweils aktuellen Monat bearbeiten will.

Mit SELECT * FROM irgendwo WHERE

month(feld_datum) = month(now())

AND year(feld_datum) = year(now())

funkt das nicht.

Hat jemand ne Idee?

:confused: :confused: :confused:

Danke schonmal !

Grüße

Olli

was für einen Fehler kriegst DU ???

welchen Datentyp steht im feld_datum welchen im month(now()) ??

Link zu diesem Kommentar
Auf anderen Seiten teilen

And month(x.a)= month(now())

Musst du diese Anweisung nicht auch mit To Char umwandeln.

Das müsste doch eigentlich das gleiche Problem sein wie beim Jahr.

Es wäre auch zu überlegen, ob es nicht ganz wegfallen kann, da du beim Jahr schon den Monat mit in die Formatmaske geschrieben hast

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von Fuldaer_Bub

Welchen Datentyp die Felder haben, weiss ich nicht. Ist wie gesagt Oracle, da habe ich nicht so die Ahnung von. :eek:

Du bist lustig, wo arbeitest du? Bei Try and Error Inc

Nicht nur das du selber deine Zeit verschwendest, nein du ziehst auch noch andere die dir helfen wollen mit rein.

Wenn du nicht weiß mit was für Daten du arbeitest, frage jemanden der das weiß. Alternativ könntest du mit Oracle Tools einfach nachschauen. Einen Login hast du ja hoffentlich.

Relativ einfach zu verstehen ist:

http://www.toadsoft.com/lic_agree.html

Gruß Jaraz

Link zu diesem Kommentar
Auf anderen Seiten teilen

@ Jaraz :

Na danke..:( :(

Wie oben zu lesen ist, greife ich lediglich über einen ODBC-Treiber auf diese Datenbank zu. Andere SQL-Statements funktionieren innerhalb meines VB-Programmes, nur mit MONTH habe ich so meine Probleme.

Ich weiss wohl, das unter MYSQL die gleiche Abfrage wohl so aussieht :

WHERE (x.a>={ts '2004-01-01 00:00:00.000'} And x.a<{ts '2004-01-31 00:00:00.000'})

"ts" ist demnach ein Zeitstempel. Aber ich möchte meine Abfrage variabel machen und nicht jeden Monat einen neuen Zeitraum eintragen. :rolleyes:

Link zu diesem Kommentar
Auf anderen Seiten teilen

zum thema:

meine oben gepostete lösung ist nur für oracle gültig, da sysdate und to_char oracle-spezifische funktionen sind (thema des threads: "SQL-Statements auf Oracle" ;)). daher kann es auf einer mysql-datenbank nicht funktionieren. wie die konvertierung dort funktioniert kann ich dir allerdings nicht sagen...

wenn das ganze auch für unterschiedliche datenbanksysteme funktionieren soll, würde ich auf den between-operator zurückgreifen. dieser ist sql-standard und sollte daher überall zur verfügung stehen.

[...] where datum_feld between datum_monatserster and datum_monatsletzer
den ersten und den letzten tag des monats müsstest du dann programmatisch bestimmen. nichts desto weniger solltest du schon wissen, welche datentypen die atrribute in den tabellen haben, da sich das auf die sql-operatoren auswirkt. [edit]
[...]where to_char(datum_feld, 'MMYYYY') = to_char(sysdate, 'MMYYYY')

vergleicht monat und jahr, so dass du den vergleich mit month(...) nicht mehr benötigst. to_char(sysdate, 'MMYYYY') liefert für heut, 11.02.2004 den string "022004"

[/edit]

hth...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...