MSSQL aktuelle Uhrzeit +- xx Minuten Toleranz

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

  • #16
    Hat jemand sonst noch einen konstruktiven Vorschlag als in der OH nachzuschauen?

    PHP Code:
    gegeben:
    SELECT FROM Person 
     WHERE letzterLogin BETWEEN DATEADD
    (MI,-60,GETDATE()) AND DATEADD(MI,60,GETDATE()) 


    test:
    SELECT DATEADD(MI,-60,GETDATE()) as ug,  
       
    DATEADD(MI,60,GETDATE()) as og
       
    GETDATE() as jetzt ,letzterLogin
       ( 
    letzterLogin BETWEEN ug AND og) as bbool ,
       ( 
    letzterLogin BETWEEN DATEADD(MI,-60,GETDATE()) AND 
           
    DATEADD(MI,60,GETDATE()) ) as cbool
    FROM Person 
      ORDER BY letzterLogin DESC
      LIMIT 0
    ,10 
    und den Resultset ausgeben (standardFkt welche einen beliebigen resultset als Tabelle ausgibt inkl <th>, gibt's überall. ug=untere Grenze, og=obere Grenze, bbool=boolean)

    Das ist ohne ins Buch oder OH zu schauen, welches ich auch nicht habe weil ich sonst mysql mache.

    edit: cbool und formatierung
    edit: ORDER BY
    tip: nachher noch LIMIT 20,10 anschauen
    Last edited by phoenix20; 07-06-2006, 01:01.

    Comment


    • #17
      hallo,

      danke für deine Hilfe.

      hab dein sql-statement vorab mal im Query-Analyzer versucht laufen zu lassen mit folgendem Ergebnis:

      Server: Msg 156, Level 15, State 1, Line 4
      Incorrect syntax near the keyword 'BETWEEN'.
      Hast du eine Ahnung woran das liegen könnte?


      Hab das Script auch in meine PHP-Datei mal wie folgt eingebaut:

      $query = 'use '.DB_NAME.';
      SELECT DATEADD(MI,-60,GETDATE()) as ug,
      DATEADD(MI,60,GETDATE()) as og,
      GETDATE() as jetzt ,letzterLogin,
      ( letzterLogin BETWEEN ug AND og) as bbool ,
      ( letzterLogin BETWEEN DATEADD(MI,-60,GETDATE()) AND
      DATEADD(MI,60,GETDATE()) ) as cbool
      FROM '.PERSON. '
      ORDER BY letzterLogin DESC
      LIMIT 0,10 ';

      Hier der geprintete Query: SELECT DATEADD(MI,-60,GETDATE()) as ug, DATEADD(MI,60,GETDATE()) as og, GETDATE() as jetzt ,letzterLogin, ( letzterLogin BETWEEN ug AND og) as bbool , ( letzterLogin BETWEEN DATEADD(MI,-60,GETDATE()) AND DATEADD(MI,60,GETDATE()) ) as cbool FROM Person ORDER BY letzterLogin DESC LIMIT 0,10

      Fehlermeldung: DB Error: unknown error

      Versucht das Script ein wenig anzupassen
      $query = 'use '.DB_NAME.';
      SELECT DATEADD(MI,-60,'.GETDATE().') as ug,
      DATEADD(MI,60,'.GETDATE().') as og,
      '.GETDATE().' as jetzt ,letzterLogin,
      ( letzterLogin BETWEEN ug AND og) as bbool ,
      ( letzterLogin BETWEEN DATEADD(MI,-60,'.GETDATE().') AND
      DATEADD(MI,60,'.GETDATE().') ) as cbool
      FROM '.PERSON. '
      ORDER BY letzterLogin DESC
      LIMIT 0,10 ';

      Ausgabe des Query: SELECT DATEADD(MI,-60,Array) as ug, DATEADD(MI,60,Array) as og, Array as jetzt ,letzterLogin, ( letzterLogin BETWEEN ug AND og) as bbool , ( letzterLogin BETWEEN DATEADD(MI,-60,Array) AND DATEADD(MI,60,Array) ) as cbool FROM Person ORDER BY letzterLogin DESC LIMIT 0,10 DB

      Error: unknown error


      Weiß jemand woran es liegen könnte?

      Comment


      • #18
        Dass getdate ein Array zurück liefert, steht aber im Manual.

        Comment


        • #19
          die Aenderung auf ein php getdate() war nicht gut. Es muss wieder ein SQL GETDATE() sein. Das GETDATE() und das DATEADD sind richtig nach dem angegebenen EULANDA manual, daran liegts also nicht.

          Ich kenne dein verwendetes sql nicht und müsste ein Manual haben. das EULANDA hat mir nicht genug geliefert. In mysql würde dieses $sql gehen (ausser DATEADD ist anders). die BETWEEN können an den alias liegen.

          Jetzt wirfst Du also aus dem test-sql stückweise alles raus, bis es geht. Das ist in wenigen Minuten ohne sql-analyzer zu schaffen. Rauswerfen kannst Du folgendes der reihe nach:

          - den Ausdruck für bbool wegen den aliasnamen drin
          - as ug und alle anderen as vielleicht gehen alias nicht

          - alles ausser dem ersten Ausdruck

          Viel erfolg.

          Comment


          • #20
            nicole24, die böse Hexe wahsaga versucht mich rauszuwerfen, kannst im php.de Forum weiterfragen.

            Comment


            • #21
              Nee, Akzeptiere bitte die Woche Strafe!

              Comment


              • #22
                @phoenix20B
                kannst mir mal bitte dein den Grund für dein Statement nennen.
                Versteh nicht ganz was ich gemacht haben soll um dich rauszuwerfen.

                Comment


                • #23
                  OffTopic:
                  @nicolebi24: Musst du auch nicht verstehen - auf Grund einer absolut arroganten Antwort seinerseits habe ich Mr. phoenix20 heute mittag für eine Woche gebannt, aber er meint sich immer wieder mit neuen Accounts hier anmelden zu müssen, die dann aber auch recht schnell wieder gekickt werden.
                  Hat also nichts mit dir zu tun.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Comment


                  • #24
                    Mit der bösen hexe ist der böse Moderator wahsaga gemeint (hat er gerade selber zugegeben). Der asp2php ist übrigens gerade von der gleichen Sorte.

                    Comment


                    • #25
                      Ey, das war ICH! Nicht der asp!

                      Comment


                      • #26
                        Original geschrieben von nicolebi24

                        hab dein sql-statement vorab mal im Query-Analyzer versucht laufen zu lassen mit folgendem Ergebnis:

                        Server: Msg 156, Level 15, State 1, Line 4
                        Incorrect syntax near the keyword 'BETWEEN'.
                        Hast du eine Ahnung woran das liegen könnte?
                        aber klar doch, das kann ich dir sagen:

                        der Großmaul hat ungeniert MySQL und T-SQL vermischt, da der QA aber vernünftigerweise nur auf T-SQL steht, meckert er

                        Comment


                        • #27
                          @asp2php
                          wäre vielleicht ganz hilfreich wenn du mir sagen könntest wie das SQL-Statement dann richtig lauten würde, bevor ich hier noch Stunde um Stunde dransitze und rumprobiere.

                          Comment


                          • #28
                            SELECT * FROM Person
                            WHERE letzterLogin BETWEEN DATEADD(MI,-60,GETDATE()) AND DATEADD(MI,60,GETDATE())

                            wenn man davon ausgeht, dass dieses stmt syntaktisch richtig ist aber falsche Resultate liefert, und dass der/die Fragerin kein manual ausser das eulanda online hat, ist mein Vorgehen ganz richtig.

                            jedenfalls hat es innert 3 Tagen und 25 Meldungen und der 'Mithilfe' von 3 modis noch keine Lösung gegeben. Das ist hier immer so, im Grund ist das Forum eine Ideenfalle. Die newbies liefern ab was sie wissen und gehen nicht gescheiter wieder davon. Die modis sind zu einem beachtlichen Teil auf einer Müllhalde aufgewachsen.

                            Comment

                            Working...
                            X