String concatenation

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • String concatenation

    Hallo

    ich schreibe im Moment an einer Funktion in plpgsql für Postgres
    Das Problem, das ich habe ist folgendes:

    Ich habe ein ganz normales select statement auf ein date feld was allerdings mit einem zusatz von + interval 'timediff minutes' versehen ist
    timediff ist eine zuvor gesetzte Variable...
    Leider wird diese nicht als Variable erkannt! Hat jemand ein Tipp?

    Vielen Dank
    Boris


    Ganz am Rande:
    Ich hab so etwas vorher mit einem execute gelöst und dafür konnte ich den sqlquery als zusammensetzen und die variable dazwischenschieben.
    Aber execute und select into vertragen sich nicht

  • #2
    'timediff minutes' <- das ist ein string? du hast die ' drum?

    oder war das nur zum hervorheben?


    poste doch mal deine query.
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      ja klar ist es string das ist auch mein problem, aber es muss ja auch in ' geschrieben werden, weil das vom interval verlangt wird.

      mein query:

      select into temp *
      from meinTable
      where datum1 between datum2 and datum2 + interval 'timediff minutes'
      and id = a_counter_id;

      wie gesagt vorher wurde mit select into zb a_counter_id gelesen, weil es nicht zwischen zwei ' steht, funktioniert das, also wird als var anerkannt.
      Sobald ich was in ' schreibe, ist es logischerweise string. Die Frage ist, wie kann man das umgehen?

      Danke
      Gruss

      Kommentar


      • #4
        Original geschrieben von boris
        [...] aber es muss ja auch in ' geschrieben werden, weil das vom interval verlangt wird. [...]
        das wäre mir neu .....

        und warum machst du SELECT + INTO ? INTO gehört zu einem INSERT !


        ich habe mal deine query etwas umgebaut. wie du siehst, fehlt irgendwas....
        Code:
        SELECT
            * 
        FROM
            meinTable 
        WHERE
            datum1 BETWEN datum2 AND
            id = a_counter_id AND
            DATE_ADD(datum2, INTERVAL 10 MINUTE) ... ?
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          ich mache select into weil ich das als select into brauche
          es gehört nicht nur zu einem insert

          das mit dem DATE_ADD kenne ich gar nicht...
          ich arbeite mit postgres und da war so wie ich das getestet habe ' verlangt
          Es hat ohne nicht funktioniert

          Danke
          Gruss

          Kommentar


          • #6
            Original geschrieben von boris
            ich mache select into weil ich das als select into brauche
            du willst also eine andere tabelle befüllen oder was?

            http://www.mysql.com/doc/en/SELECT_INTO_Statement.html
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              nein! wie kommst du darauf?

              ich habe ja schon geschrieben dass ich mit postgres arbeite und eine funktion in plpgsql sprache schreibe

              wenn ich sage select into temp *
              lese ich einen record in die var temp ein!

              Aber mein Poblem war nur
              .... + interval 'timediff minutes' ....

              Fakt ist, es muss in ' stehen und dann wird timediff nicht als var erkannt, sondern ist als string timediff
              obwohl timediff vorher auch mittels select into aus der db gelesen wurde

              gruss

              Kommentar


              • #8
                probier mal sowas
                Code:
                select into temp *
                from meinTable
                where datum1 between datum2 and datum2 + CAST(interval as string) || ' minutes'
                and id = a_counter_id;
                vielleicht geht's ja so
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  danke mrhappiness
                  es ging aber nicht...
                  ich habe es ganz anders gelöst, bei postgres gibt es ja den datentyp interval
                  es ist zb. in form 00:15 minuten
                  dieses kann ich ohne probleme auf ein datum draufzählen

                  temp := date + meininterval;

                  ohne hochkommas und sonstiges!

                  gruss

                  Kommentar

                  Lädt...
                  X