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.

SQL-Statements auf Oracle

Empfohlene Antworten

Veröffentlicht

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

hi,

[...]where to_char(datum_feld, 'MMYYYY') = to_char(sysdate, 'MMYYYY')

sollte funktionieren

sysdate liefert in oracle das aktualle datum zurück. to_char konvertiert in einen string mit dem übergebenen format (Monat zweistellig, jahr vierstellig, ohne trennzeichen).

hth...

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 ?

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()) ??

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

@bigpoint :

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

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

@ 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:

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

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.