Sonic: SQL-Abfrage mit DatePart

Ich brauche Hilfe bei einer SQL-Abfrage mit DatePart.

Ich habe folgende Tabelle mit 3 Feldern:

id      von                     bis
1       12.11.2005 11:30:03     12.11.2005 12:43:18
2       14.11.2005 08:00:00     15.11.2005 06:00:41
3       14.11.2005 07:24:45     14.11.2005 12:33:07

Ich möchte alle ids haben, die in einem Zeitraum 13.11.2005 - 14.11.2005 zwischen 06:00:00 - 12:30:00 eingetragen wurden.

id2 soll angezeigt werden. Hilfe! Danke!

  1. Hallo Sonic,

    erstens ist dies ein Doppelposting zu https://forum.selfhtml.org/?t=119525&m=766854,

    id      von                     bis
    1       12.11.2005 11:30:03     12.11.2005 12:43:18
    2       14.11.2005 08:00:00     15.11.2005 06:00:41
    3       14.11.2005 07:24:45     14.11.2005 12:33:07

    Ich möchte alle ids haben, die in einem Zeitraum 13.11.2005 - 14.11.2005 zwischen 06:00:00 - 12:30:00 eingetragen wurden.

    id2 soll angezeigt werden. Hilfe! Danke!

    zweitens: Warum soll die id 3 nicht in der Ergebnismenge auftreten?

    Freundliche Grüße

    Vinzenz

    1. zweitens: Warum soll die id 3 nicht in der Ergebnismenge auftreten?

      weil die Uhrzeit 12:33:07 > 12:30:00

      1. Hallo,

        zweitens: Warum soll die id 3 nicht in der Ergebnismenge auftreten?

        weil die Uhrzeit 12:33:07 > 12:30:00

        Ich möchte alle ids haben, die in einem Zeitraum 13.11.2005 - 14.11.2005 zwischen 06:00:00 - 12:30:00 eingetragen wurden.

        Dann erkläre mal die Bedeutung der Felder und wie sie  mit Deinen Bedingungen in Beziehungen stehen. Formuliere die Bedingung eventuell einmal in einem Pseudo-Code, damit wir verstehen was Du wirklich willst. Erst wenn das klar ist, kann man auhc zur Umsetzung in der von Dir verwendeten Datenbank schreiten.

        Grüße
          Klaus

        1. Die Felder in meiner Datenbank bilden Zeiträume:

          von 12.11.2005 11:30:03  bis  12.11.2005 12:43:18
          von 14.11.2005 08:00:00  bis  15.11.2005 06:00:41
          von 14.11.2005 07:24:45  bis  14.11.2005 12:33:07

          Ich möchte aus diesen Zeiträumen die Einträge selektieren, die im Zeitraum 13.11.2005 - 14.11.2005 zwischen 06:00:00 - 12:30:00 liegen bzw. diese Suchkriterien erfüllen.

          Between 13.11.2005 06:00:00 and 14.11.2005 12:30:00 wäre nicht richtig. Die Uhrzeit soll zwischen 06:00:00 - 12:30:00 liegen.

      2. Hallo

        zweitens: Warum soll die id 3 nicht in der Ergebnismenge auftreten?

        weil die Uhrzeit 12:33:07 > 12:30:00

        id      von                     bis
        1       12.11.2005 11:30:03     12.11.2005 12:43:18
        2       14.11.2005 08:00:00     15.11.2005 06:00:41
        3       14.11.2005 07:24:45     14.11.2005 12:33:07

        Ich möchte alle ids haben, die in einem Zeitraum 13.11.2005 - 14.11.2005 zwischen 06:00:00 - 12:30:00 eingetragen wurden.

        id2 soll angezeigt werden. Hilfe! Danke!

        Warum dann die id 2?
        Tag > 14.11.2005

        Du solltest uns, wie bereits Klaus gebeten hat, das verbindliche Schema angeben.

        Freundliche Grüße

        Vinzenz

        1. Warum dann die id 2?
          Tag > 14.11.2005

          sorry

          id
          2       14.11.2005 08:00:00     14.11.2005 06:00:41
                                           |
                                           |
                                         hier 14 und nicht 15

      3. Hi!

        zweitens: Warum soll die id 3 nicht in der Ergebnismenge auftreten?

        weil die Uhrzeit 12:33:07 > 12:30:00

        Als wenn du "bis" mit in deine Suchkriterien aufnimmst wirst du keine Ergebnissmenge erhalten denn bei Id 2 ist bis > 14.11.2005

        ...

        1. Als wenn du "bis" mit in deine Suchkriterien aufnimmst wirst du keine Ergebnissmenge erhalten denn bei Id 2 ist bis > 14.11.2005

          »»

          ja, sorry, bei id2 müsste dann bis: 14. stehen
          aber du hast schon verstanden, was ich meine, welche SQL-Abfrage ich brauche

  2. Hi!

    Ich möchte alle ids haben, die in einem Zeitraum 13.11.2005 - 14.11.2005 zwischen 06:00:00 - 12:30:00 eingetragen wurden.

    Vorausgesetzt du meinst "von" wenn du von "eingetragen wurden" sprichts.

    (von BETWEEN 13.11.2005 06:00:00 AND 13.11.2005 12:30:00) OR (von BETWEEN 14.11.2005 06:00:00 AND 14.11.2005 12:30:00))

    Gruß

    1. (von BETWEEN 13.11.2005 06:00:00 AND 13.11.2005 12:30:00) OR (von BETWEEN 14.11.2005 06:00:00 AND 14.11.2005 12:30:00))

      Das wird ja nur für einen Zeitraum von 13en-14en gehen. Wenn aber mehrere Tage zwischen sind, z.B.
      13.11.2005 - 18.11.2005 zwischen 06:00:00 - 12:30:00
      wird das nicht mehr gehen.

      1. Hi!

        (von BETWEEN 13.11.2005 06:00:00 AND 13.11.2005 12:30:00) OR (von BETWEEN 14.11.2005 06:00:00 AND 14.11.2005 12:30:00))

        Das wird ja nur für einen Zeitraum von 13en-14en gehen. Wenn aber mehrere Tage zwischen sind, z.B.
        13.11.2005 - 18.11.2005 zwischen 06:00:00 - 12:30:00
        wird das nicht mehr gehen.

        ...und warum fragst du dann explizit nach diesem Zeitraum, wenn du ihn gar nicht suchst?

        (von BETWEEN 13.11.2005 00:00:00 AND 18.11.2005 23:59:59) AND ((DATEPART(hh, von ) > 06) AND ((DATEPART(hh, von ) < 12)) 18.11.2005 12:30:00))
        AND
        ((CONVERT (char, DATEPART(hh, von)) + CONVERT (char, DATEPART(n,von)) > '06:00') AND (CONVERT (char, DATEPART(hh, von)) + CONVERT (char, DATEPART(n,von)) < '12:30'))

        so in der Art, wenn du Ms Sql Server benutzt

        1. eher so:

          (von BETWEEN 13.11.2005 00:00:00 AND 18.11.2005 23:59:59) AND

          ((CONVERT (char, DATEPART(hh, von)) + CONVERT (char, DATEPART(n,von)) > '06:00') AND (CONVERT (char, DATEPART(hh, von)) + CONVERT (char, DATEPART(n,von)) < '12:30'))

          1. ((CONVERT (char, DATEPART(hh, von)) + CONVERT (char, DATEPART(n,von)) > '06:00') AND (CONVERT (char, DATEPART(hh, von)) + CONVERT (char, DATEPART(n,von)) < '12:30'))

            das muss ich mir in Ruhe angucken, habe sowas noch nie gehabt

  3. yo,

    Ich möchte alle ids haben, die in einem Zeitraum 13.11.2005 - 14.11.2005 zwischen 06:00:00 - 12:30:00 eingetragen wurden.

    SELECT spalte1, spalte2...
    FROM tabelle
    WHERE von >= '2005-11-13 06:00:00'
    AND bis <= '2005-11-13 12:30:00'

    Ilja

    1. yo,

      kleiner tipppfähler, bis sollte ja bis zum 14. gehen.....

      AND bis <= '2005-11-14 12:30:00'

      Ilja

      1. AND bis <= '2005-11-14 12:30:00'

        Danke, aber so einfach ist das nicht...

        1. yo,

          also ich habe vielleicht die aufgabe nicht ganz verstanden. aber mir ist dann immer noch nicht klar, was genau du mit

          "Ich möchte alle ids haben, die in einem Zeitraum 13.11.2005 - 14.11.2005 zwischen 06:00:00 - 12:30:00 eingetragen wurden."

          meinst. vielleicht solltest du diese aussage noch mal mit mehreren datensätzen beispielhaft erklären. da scheint mir der hund begraben zu sein. auf die drei angebenen datensätze sollte nämlich meine abfrage nur id 2 zurück liefern. kannst du datensätze angeben, welche du haben willst und nicht durch meine abfrage erfasst werden, bzw. welche die erfasst werden aber nicht erwünscht sind ?

          Ilja

    2. Hallo Ilja,

      Ich möchte alle ids haben, die in einem Zeitraum 13.11.2005 - 14.11.2005 zwischen 06:00:00 - 12:30:00 eingetragen wurden.

      soweit ich Sonic verstanden habe, möchte er die ids haben, die an den Tagen des Zeitraumes 13.11. - 14.11.2005 eingetragen wurden und bei denen beide Uhrzeiten jeweils zwischen 06:00 Uhr und 12:30 Uhr liegen. Olivers Lösung dürfte so in etwa hinkommen. Zu ein klein wenig Feintuning sollte Sonic schon in der Lage sein.

      Freundliche Grüße

      Vinzenz