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]
hmmm falsches Format für DATE im SQL-Server.... (glaube ich )
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.
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ß
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:
$heute1=(7*($wochenummer-$i))+(($heute+6)%7);
Hallo,
vielen Dank, Herr Titus!
Wirklich sehr hilfsreich.
Klasse!
Gruß