Felix K.: Datum mit DATETIME speichern

Hallo zusammen,

ich möchte für eine Webanwendung in einer Datenbank diverse Daten (im Sinne von "ein Datum, mehrere Daten") speichern. Ich brauche auch wirklich nur das Datum, nicht die Zeit.

Leider bin ich auf MS SQL Server 2005 beschränkt, durch die Firma vorgegeben. SQL 2005 kann nun den DATE-Typ leider noch nicht. Bisher habe ich daher DATETIME benutzt. Allerdings frage ich mich mittlerweile, ob der Server da nicht eventuell über die Sommerzeit stolpern könnte, und mir bei der Umstellung dann alle Daten um 1 Tag verschiebt.

Die Daten werden über PHP/ODBC abgefragt, teilweise dort verarbeitet, teilweise auf dem Client in JavaScript. Damit die Werteübergabe mit JavaScript möglichst reibungsfrei abläuft, würde ich am liebsten Unix-Timestamps benutzen.

Ich habe bereits diese Schnipsel gefunden (als Funktionen gespeichert), um DATETIME zu UNIX und umgekehrt umzuwandeln. Aber inwiefern sind die Sommerzeit-sicher? Kann ich der Datenbank sagen, dass sie ausschließlich UTC benutzen soll? Oder ist es sinnvoll, die Zeiten z.B. als BIGINT direkt als Unixzeit zu speichern?

DATETIME2Unix:

  
   DECLARE @diff BIGINT  
    IF @dt >= '20380119'  
    BEGIN  
        SET @diff = CONVERT(BIGINT, DATEDIFF(S, '19700101', '20380119'))  
            + CONVERT(BIGINT, DATEDIFF(S, '20380119', @dt))  
    END  
    ELSE  
        SET @diff = DATEDIFF(S, '19700101', @dt)  
    RETURN @diff  

Unix2DATETIME:

  
RETURN (SELECT DATEADD(second,@ut, CAST('1970-01-01 00:00:00' AS datetime)))  

Felix

  1. Der SqlServer kennt keine Sommerzeit. Das was du ihm gibst wird so gespeichert wie du es ihm gibst, der rechnet da nichts um.

    1. Vielen Dank für die Antwort!

      Der SqlServer kennt keine Sommerzeit. Das was du ihm gibst wird so gespeichert wie du es ihm gibst, der rechnet da nichts um.

      Das wäre natürlich optimal. Nicht, dass der das in UTC umrechnet und nach einer Umstellung andere Werte zurückgibt.

      Felix