Uwe: Datentyp "datetime" in MSSQL

Hi,

hat jemand 'ne Ahnung, wie Daten formatiert sein müssen, damit ich sie in eine Feld mit dem Datentyp "datetime" in eine MSSQL-Datenbank schreiben kann?

In der Doku heißt es:

Werte des datetime-Datentyps werden von Microsoft SQL Server intern als zwei 4 Byte lange ganze Zahlen gespeichert. Die ersten 4 Byte enthalten die Anzahl der Tage vor oder nach dem Basisdatum, dem 1. Januar 1900. Das Basisdatum ist das Referenzdatum des Systems.

Leider weiß ich nicht, wie ich eine Datums- und Zeitangabe im Format
2002-07-31 16:52:30
in das erforderliche Format konvertieren kann. Ginge das evtl auch über Javascript?

Ich bin echt ratlos.

Viele Grüße

Uwe

  1. Hallo Uwe,

    eigentlich ist das garnicht so schwer, wie es Dir erscheinen mag. Es ist  für Dich uninteressant, wie der SQL-Server das Datum intern speichert.
    Wenn Du in einem Feld das aktuelle Datum speichern möchtest, dann solltest Du in Deinem INSERT/UPDATE die Funktion GetDate() verwenden.
    Solltest Du ein anderes Datum speichern wollen, solltest Du an Deinem Server nachsehen, was für ein Datumsformat Dort eingestellt ist. Genaueres zu der Stelle weiß ich aus dem Stehgreif nicht, mußt Du mal ins Handbuch schauen.

    Mit Javascript selbst sollte ein speichern in dre DB nicht möglich sein, da dies ja am Client läuft. Du mußt also in Deinem Server-Script das INSERT/UPDATE-Statement formulieren. Du kannst das Datum in das Statement als String einbauen, wenn Du das Format, in dem es gespeichert wird, weißt. Das könntest Du evtl. rauskriegen, indem Du mal das aktuelle Datum mit Getdate() reinschreibst und dann wider ausliest (Keine Garantie).
    Ansonsten ist die Verwendung von Bindvariablen in solchen Fällen immer vorzuziehen.

    HTH

    Gruß Frank

  2. hat jemand 'ne Ahnung, wie Daten formatiert sein müssen, damit ich sie in eine Feld mit dem Datentyp "datetime" in eine MSSQL-Datenbank schreiben kann?

    In der Doku heißt es:

    Werte des datetime-Datentyps werden von Microsoft SQL Server intern als zwei 4 Byte lange ganze Zahlen gespeichert. Die ersten 4 Byte

    Ich denke mal, das Zauberwort in diesem Satz heißt "intern". Mit "intern" hast Du aber nichts zu tun, Du bist als SQL-Anwender immer "extern".

    Leider weiß ich nicht, wie ich eine Datums- und Zeitangabe im Format
    2002-07-31 16:52:30
    in das erforderliche Format konvertieren kann.

    Versuch mal 20020731165230, so nimmt's MySQL. Und wenn zumindest ansatzweise SQL=SQL ist, dann müsste MSSQL den Wert ebenfalls schlucken.
    Alternative: eine datetime-spalte mit select auslesen, denn ansich kommen die Sachen immer so raus, wie man sie auch reinschieben soll.

    Gruß,
      soenk.e