Fuldaer_Bub Geschrieben 11. Februar 2004 Teilen Geschrieben 11. Februar 2004 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Peregrin Geschrieben 11. Februar 2004 Teilen Geschrieben 11. Februar 2004 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... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Fuldaer_Bub Geschrieben 11. Februar 2004 Autor Teilen Geschrieben 11. Februar 2004 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 ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bigpoint Geschrieben 11. Februar 2004 Teilen Geschrieben 11. Februar 2004 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()) ?? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Pinhead Geschrieben 11. Februar 2004 Teilen Geschrieben 11. Februar 2004 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Fuldaer_Bub Geschrieben 11. Februar 2004 Autor Teilen Geschrieben 11. Februar 2004 @bigpoint : Welchen Datentyp die Felder haben, weiss ich nicht. Ist wie gesagt Oracle, da habe ich nicht so die Ahnung von. :eek: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 11. Februar 2004 Teilen Geschrieben 11. Februar 2004 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Fuldaer_Bub Geschrieben 11. Februar 2004 Autor Teilen Geschrieben 11. Februar 2004 @ 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bigpoint Geschrieben 11. Februar 2004 Teilen Geschrieben 11. Februar 2004 und der Fehler heisst ??? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Peregrin Geschrieben 11. Februar 2004 Teilen Geschrieben 11. Februar 2004 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... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.