Meldung 242, Konvertierung eines varchar-Datentyps in einen datetime-Datentyp liegt der Wert außerhalb des gültigen Bereichs.
bearbeitet von AugeHallo
> Tatsächlich liegt es wohl daran wie es Andreas vermutet hat. Die 16 wird als Monat interpretiert.
> Mache ich ein Datum wie unten, klappt es
>
> ~~~SQL
> INSERT INTO [TESTDB] ([DATUM_BEGINN])
> VALUES
> ('2017-11-12 08:39:05')
> ~~~
>
> Es steht dann so in der Tabelle:
> 2017-12-11 08:39:05.000
>
> Dann muss wohl das PHP Script schon eine andere Formatierung machen.
Es dürfte sich dabei um Unterschiede der von PHP bzw. vom Management Studio verwendeten Zugriffswege handeln. Es gibt ja mehrere Treiber (ODBC, Native Client, diverse andere OLE-Treiber), die sich unterschiedlich verhalten. Hier mal ein Beispiel.
[![Treiberauswahl für den MS SQL Server 2008](/images/2e9a05cc-94b3-4544-95e7-f44918d80494.png?size=medium)](/images/2e9a05cc-94b3-4544-95e7-f44918d80494.png)
Schlussendlich geht es aber darum, die Regeln, die durch den MS SQL Server vorgeschrieben werden, zu erfüllen. Wenn du im INSERT-Statement das Datum explizit einem [CONVERT](https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql) unterziehst (`CONVERT(datetime, '2017-11-16 08:39:05', 121)`). Damit passt du die Eingabe garantiert in eines der unterstützten Formate an.
Tschö, Auge
--
Wenn man ausreichende Vorsichtsmaßnahmen trifft, muss man keine Vorsichtsmaßnahmen mehr treffen.
Toller Dampf voraus von Terry Pratchett