Wieder Datum

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

  • Wieder Datum

    Hallo,

    ich habe:

    $heute=date("w");

    $DATUM[$i]=date("Y-m-d",strtotime("+$heute day"));

    und beim Speichern:

    Warning: SQL error: [Microsoft][ODBC SQL Server Driver][SQL Server]Bei der Konvertierung eines char-Datentyps in einen smalldatetime-Datentyp liegt der smalldatetime-Wert außerhalb des gültigen Bereichs., SQL state 22008 in SQLExecDirect in d:\**\**\**\**\1.inc.php on line 27

    Warning: SQL error: [Microsoft][ODBC SQL Server Driver][SQL Server]Bei der Konvertierung eines char-Datentyps in einen smalldatetime-Datentyp liegt der smalldatetime-Wert außerhalb des gültigen Bereichs., SQL state 22008 in SQLExecDirect in d:\**\**\**\**\1.inc.php on line 32

    Was soll das bedeutet?
    Wer kann mir helfen?

    Gruß







    [Editiert von ediel am 13-09-2001 um 11:53]

  • #2
    hmmm falsches Format für DATE im SQL-Server.... (glaube ich )

    php-Entwicklung | ebiz-consult.de
    PHP-Webhosting für PHP Entwickler | ebiz-webhosting.de
    die PHP Marktplatz-Software | ebiz-trader.de

    Kommentar


    • #3
      Welches Format hat denn smalldatetime?
      Und was für ein Datum soll da rein?

      date("Y-m-d",strtotime("+$heute day")); sieht mir sehr seltsam aus ... laß die $DATUM[$i] nochmal ausgeben, bevor du es speicherst, vermutlich kannst du dir deine Frage dann schon selbst beantworten.


      mein Sport: mein Frühstück: meine Arbeit:

      Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

      Kommentar


      • #4
        Hallo,

        ich versuche mal genaue erklären:

        mit aktuelle Kalenderwochenummer erzeuge ich ein select-auswahlfeld von 1 Kal.woche akt.Jahr bis z.B. 10 Kal.woche nächst.Jahr. Benutzer soll eine Möglichkeit haben,nach Kal.woche (erscheinen alle 7 Tage[montag-sonntag], als Datum in Deutsche Format- dd.mm.yyyy) wählen, und alte Einträge bearbeiten, oder neu erstellen und in SQL Server 7 DB speichern:

        Datum Format habe ich geändert,jetzt DATETIME.
        (YYYY-mm-dd 00:00:00.000). Speichern kann ich jetzt ohne Problem, SQL wandelt selbst Deutsche Format in Englische.

        Aber zurück aus Eng. -> Deutsch. habe ich wirklich auch Probleme gehabt,aber gestern habe ich wieder eine Lösung
        gefunden.

        Source Code:
        nach Kal.woche:

        $wochenummer=strftime("%W");

        for($i=1;$i<=60;$i++)
        {
        if($wochenummer>($i))
        {
        $heute=date("w");
        switch($heute)
        {
        case 1:$zwischen=$wochenummer-($i);$heute1=(7*$zwischen);break;
        case 2:$zwischen=$wochenummer-($i);$heute1=(7*$zwischen)+1;break;
        case 3:$zwischen=$wochenummer-($i);$heute1=(7*$zwischen)+2;break;
        case 4:$zwischen=$wochenummer-($i);$heute1=(7*$zwischen)+3;break;
        case 5:$zwischen=$wochenummer-($i);$heute1=(7*$zwischen)+4;break;
        case 6:$zwischen=$wochenummer-($i);$heute1=(7*$zwischen)+5;break;
        case 0:$zwischen=$wochenummer-($i);$heute1=(7*$zwischen)+6;break;
        } // end switch
        for($x=0;$x<7;$x++)
        {
        $date1[$x]=date("d.m.Y",strtotime("-$heute1 day"));
        $heute1--;
        } // end for
        $zusammen=array_merge($date1[0],$date1[6]);
        $ha .=implode("-",$zusammen);
        $ha .=",";
        } // end if
        if($wochenummer==$i)
        {
        $heute=date("w");
        switch($heute)
        {
        case 1:$zwischen=0;$heute1=(7*$zwischen);break;
        case 2:$zwischen=0;$heute1=(7*$zwischen)-1;break;
        case 3:$zwischen=0;$heute1=(7*$zwischen)-2;break;
        case 4:$zwischen=0;$heute1=(7*$zwischen)-3;break;
        case 5:$zwischen=0;$heute1=(7*$zwischen)-4;break;
        case 6:$zwischen=0;$heute1=(7*$zwischen)-5;break;
        case 0:$zwischen=0;$heute1=(7*$zwischen)-6;break;
        } // end switch
        for($z=0;$z<7;$z++)
        {
        $date2[$z]=date("d.m.Y",strtotime("+$heute1 day"));
        $heute1++;
        } // end for
        $zu=array_merge($date2[0],$date2[6]);
        $han .=implode("-",$zu);
        $han .=",";
        } // end if
        if($wochenummer<$i)
        {
        $heute=date("w");
        switch($heute)
        {
        case 1:$zwischen=$i-$wochenummer;$heute1=(7*$zwischen);break;
        case 2:$zwischen=$i-$wochenummer;$heute1=(7*$zwischen)-1;break;
        case 3:$zwischen=$i-$wochenummer;$heute1=(7*$zwischen)-2;break;
        case 4:$zwischen=$i-$wochenummer;$heute1=(7*$zwischen)-3;break;
        case 5:$zwischen=$i-$wochenummer;$heute1=(7*$zwischen)-4;break;
        case 6:$zwischen=$i-$wochenummer;$heute1=(7*$zwischen)-5;break;
        case 0:$zwischen=$i-$wochenummer;$heute1=(7*$zwischen)-6;break;
        } // end switch
        for($y=0;$y<7;$y++)
        {
        $date3[$y]=date("d.m.Y",strtotime("+$heute1 day"));
        $heute1++;
        } // end for
        $zug=array_merge($date3[0],$date3[6]);
        $hana .=implode("-",$zug);
        $hana .=",";
        } // end if
        } // end for
        $h=$ha.$han.$hana;
        $datum=explode(",",$h);
        array_pop($datum);
        for($g=0;$g<count($datum);$g++)
        {
        $c=$g+1;
        if($g==0)$selopt.="<option value='$c' selected> $datum[$g]";
        else
        $selopt.="<option value='$c'> $datum[$g]";
        }

        Source Code:
        SQL-Select Eng -> Deutsche Format:

        $m=monat zwischen 01-12; und in for-schleife:

        $sql="select CONVERT(varchar(10),Datum,104) as Datum,Schicht,Name FROM TAbelle WHERE CONVERT(varchar(10),Datum,104) LIKE '%.$m.$datum' ORDER BY Datum,Schicht,Name";
        $result=odbc_exec($db,$sql);

        Danke.

        Gruß

        Kommentar


        • #5
          ::verkürz::

          Code:
          switch($heute) 
          { 
          case 1:$zwischen=$wochenummer-($i);$heute1=(7*$zwischen);break; 
          case 2:$zwischen=$wochenummer-($i);$heute1=(7*$zwischen)+1;break; 
          case 3:$zwischen=$wochenummer-($i);$heute1=(7*$zwischen)+2;break; 
          case 4:$zwischen=$wochenummer-($i);$heute1=(7*$zwischen)+3;break; 
          case 5:$zwischen=$wochenummer-($i);$heute1=(7*$zwischen)+4;break; 
          case 6:$zwischen=$wochenummer-($i);$heute1=(7*$zwischen)+5;break; 
          case 0:$zwischen=$wochenummer-($i);$heute1=(7*$zwischen)+6;break; 
          } // end switch
          uargh ... besser ist das:
          Code:
          $heute1=(7*($wochenummer-$i))+(($heute+6)%7);
          mein Sport: mein Frühstück: meine Arbeit:

          Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

          Kommentar


          • #6
            Hallo,

            vielen Dank, Herr Titus!

            Wirklich sehr hilfsreich.

            Klasse!

            Gruß

            Kommentar

            Lädt...
            X