Announcement

Collapse
No announcement yet.

Zeitraum ermitteln (Wahr/Falsch)

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zeitraum ermitteln (Wahr/Falsch)

    Hallo Zusammen,

    wenn das Datum zwischen dem 01.06. und 15.06 eines jeden Jahres liegt, dann brauche ich als Ergebnis Wahr - ansonsten Falsch.

    Da ich mit dem Systemdatum und nicht mit einem Datum aus einem DB-Feld arbeiten muss, weiß ich nicht, wie ich zum Ziel kommen kann. Meine bisherige Suche bei Tante Google und hier, verlief im Sande.

    Hoffe jemand von euch kann mir weiterhelfen.

    Besten Dank schon mal im Voraus

    René

  • #2
    Einfach die Datumswerte in Jahr, Monat, Tag zerlegen und dann Abfragen ob Monat = 6 und Tag zwischen 1 und 16 liegt. Die Zerlegung inst DBMS spezifisch z.B. mit Extract( Month from ) oder Month( )

    Comment


    • #3
      Hallo Markus,

      danke für die Richtung, nur bin ich in SQL noch nicht so fit, als dass ich es so einfach umsetzen könnte. Hast du vielleicht einen Anfang für mich?

      LG
      Rene

      Comment


      • #4
        Wie gesagt hängt das vom verwendeten DBMS ab [highlight=sql]select ...where Extract( month from Datum ) = 6 and Exctract( day from datum between 1 and 15;[/highlight]

        Comment


        • #5
          Hallo Markus,

          danke für den Hinweis

          Ich habe hier einen MS SQL 2005-Server.

          Da ich ja immer von dem aktuellen Tagsdatum ausgehen muss, muss ich zusätzlich ja mit GETDATE() arbeiten.

          Einen Bezug zu einer Tabelle habe ich in dem Fall nicht, weshalb ich es so versucht habe:

          Code:
          SELECT * WHERE Extract( month FROM GETDATE() ) = 6 AND Exctract( day FROM GETDATE()  BETWEEN 1 AND 15;
          Hier bekomme ich jedoch die Fehlermeldung: "Falsche Syntax in der Nähe des 'From' ...."


          Ich habe im Netz auch noch ein Beispiel gefunden, welches ich mal angepasst habe:

          Code:
          SELECT EXTRACT(YEAR FROM RGDate)
          FROM MeineTabelle
          Aber auch hier erhalte ich die gleiche Fehlermeldung wie oben.


          Wo mache ich etwas falsch?


          VG
          René

          Comment


          • #6
            Im ersten Beispiel gibts gar kein FROM

            Im zweiten Beispiel muss MeineTabelle natürlich durch Deine physikalisch existierende Tabelle ersetzt werden

            Comment


            • #7
              Wenn ich mir das Beispiel von Markus anschaue, ist doch dort .... "Extract(month FROM" .... oder verstehe ich grad etwas flasch?

              Die Spalte und den Tabellennamen habe ich bei mir auch angepasst gehabt. Hatte hier grad nur das Beispiel gepostet.

              Comment


              • #8
                Das Extract Statement hat eine eigene Syntax, blöderweise auch mit FROM. Allerdings MUSS jedes normale SQL Kommando mindestens folgenden Aufbau haben:

                [highlight=sql]
                SELECT <Spalten>||*
                FROM Tabelle
                [/highlight]

                Du brauchst mindestens ein SELECT, dahinter stehen die Spalten die ausgegeben werden sollen, und mindestens ein FROM, dahinter stehen die Tabellen aus denen die Spalten kommen. Im EXTRACT werden diese Spalten einfach weiter verwendet.

                Comment


                • #9
                  Hi,

                  Habe es mal so angepasst, wie ich es verstanden habe.

                  Code:
                  SELECT RGDate
                  from RGTab
                  WHERE Extract( month FROM GETDATE() ) = 6 AND Exctract( day FROM GETDATE()  BETWEEN 1 AND 15 )
                  Die Fehlermeldung bleibt: Meldung 156, Ebene 15, Status 1, Zeile 3
                  Falsche Syntax in der Nähe des 'FROM'-Schlüsselwortes.

                  Was mache ich da noch falsch?

                  Comment


                  • #10
                    Das Extract unten ist falsch geschrieben und die Klammern gehören nur um das Extract. Ausserdem macht GetDate() unten keinen Sinn, Du willst ja die Werte (RGDate) aus Deiner Tabelle verwenden.

                    [highlight=sql]
                    SELECT RGDate
                    from RGTab
                    WHERE
                    Extract(month FROM RGDate) = 6
                    AND Exctract(day FROM RGDate) BETWEEN 1 AND 15
                    [/highlight]

                    Vielleicht darf ich Dir auch mal WikiBooks - Einführung in SQL ans Herz legen. Da fehlen wohl noch ein paar Basics.

                    Comment


                    • #11
                      Originally posted by catao View Post
                      Hallo Markus,

                      danke für den Hinweis

                      Ich habe hier einen MS SQL 2005-Server.

                      Da ich ja immer von dem aktuellen Tagsdatum ausgehen muss, muss ich zusätzlich ja mit GETDATE() arbeiten.

                      Einen Bezug zu einer Tabelle habe ich in dem Fall nicht, weshalb ich es so versucht habe:

                      Code:
                      SELECT * WHERE Extract( month FROM GETDATE() ) = 6 AND Exctract( day FROM GETDATE()  BETWEEN 1 AND 15;
                      Hier bekomme ich jedoch die Fehlermeldung: "Falsche Syntax in der Nähe des 'From' ...."


                      Ich habe im Netz auch noch ein Beispiel gefunden, welches ich mal angepasst habe:

                      Code:
                      SELECT EXTRACT(YEAR FROM RGDate)
                      FROM MeineTabelle
                      Aber auch hier erhalte ich die gleiche Fehlermeldung wie oben.


                      Wo mache ich etwas falsch?


                      VG
                      René
                      MS-SQL-Server 2005 kennt nun mal kein EXTRACT...

                      Dort heißt die Funktion DATEPART ( datepart , date )...

                      Comment


                      • #12
                        -.- das ist natürlich doof bin davon ausgegangen dass das geht... na dann muss mans halt auf DATEPART umstricken , aber das sollte ja kein großes Problem sein....








                        btw.: Ich hasse den nicht vorhandenen standard bei SQL

                        Comment


                        • #13
                          DANKE ebis )))

                          Ich hatte zwar etwas über DATEPART gelesen, nur nicht weiter beachtet, weil ich mich an dem Punkt "EXTRACT" festgehalten habe.

                          Soweit funktioniert folgender Code:
                          Code:
                          Select * from RegTab where DATEPART(month, RegDate) =5
                          and DATEPART(Day, RGDate) BETWEEN 8 AND 14
                          Da ich jedoch das Ganze anhand von dem aktuellen Tagesdatum realisieren muss, habe ich es dann weiter so angepasst:

                          Code:
                          select * from RGTab where DATEPART(month, GETDATE()) = 5
                          and DATEPART(Day, GETDATE()) BETWEEN 1 AND 31
                          Hier zeigt es mir dummerweise alles an, auch jene die nicht in dem o.g. Zeitraum liegen.


                          Dann habe ich zusätzlich noch den Weg zu meistern, als das ich als Ergebnis nur ein Wahr/Falsch (True/False) brauche. Weil ich muss mit dem vorstehenden Code noch unter Crystal Reports weiterarbeiten und für weitere Funktionen brauche ich eine entsprechende Erweiterung. Geht sowas überhaupt oder muss ich mir etwas anderes einfallen lassen?


                          Hat jemand von euch noch eine Idee, die mich zur Lösung führt?


                          VG
                          René

                          Comment


                          • #14
                            Ich schrieb ja von Anfang an, dass die Lösung vom DBMS abhängt. Und habe diese Lösung nur exemplarisch genannt, da uns das verwendete System nicht genannt wurde.

                            Comment


                            • #15
                              Originally posted by catao View Post
                              Code:
                              select * from RGTab where DATEPART(month, GETDATE()) = 5
                              and DATEPART(Day, GETDATE()) BETWEEN 1 AND 31
                              Hier zeigt es mir dummerweise alles an, auch jene die nicht in dem o.g. Zeitraum liegen.
                              Deine Where-Clause ist ja auch sinnfrei, da nicht mit Deiner Tabelle verknüpft
                              Also mußt Du Dich nicht wundern, das alle Zeilen Deiner Tabelle zurückgegeben werden.

                              Comment

                              Working...
                              X