none
CreatedOn Date RRS feed

  • Frage

  • Hallo,

    so jetzt noch ne frage undzwar wenn ich einen neuen DB eintrag im z.B. CRM generier dann wird in der Datnebank bei CreatedOn date nicht das aktuelle Datum genommen sondern das 2 stunden zuvor. Ich hab einen Englischen Win2008 Server + Enlischer SQL 2008.

     

    jemand eine Idee wie ich das hinbekomme das die Einträge auch die korrekte Zeit haben ?

     

    Gruss

    Peter

    Dienstag, 25. Mai 2010 14:16

Antworten

  • Hallo Peter,

    Eine UTC Zeit vermeidet einige Probleme, die bei lokalen Zeiten auftreten können,
    auch Windows verwendet das intern. (Und ich es in den .NET Foren es häufiger habe
    erläutern müssen,  wo einige Verständnisschwierigkeiten auftraten ;-)

    Beim SQL Server 2008 hast Du mit DATETIMEOFFSET einen Datentyp,
    mit dem das Umrechnen möglich ist, siehe Verwenden von Datums- und Zeitdaten
    und Datums- und Uhrzeitdatentypen und zugehörige Funktionen (Transact-SQL)

    Bevor man dort was ändert, sollte man eine Lösung darüber versuchen, z. B.:

    -- DATETIME als UTC Zeit
    DECLARE @zeit datetime = GETUTCDATE();
    
    SELECT @zeit AS UtcDateTime,
    	DATEADD(MINUTE, DATEPART(TZOFFSET, SYSDATETIMEOFFSET()), @Zeit) AS LokaleZeit,
    	SYSDATETIMEOFFSET() AS LokalDateTimeOffset
    
    Wobei der CRM Hersteller evtl. noch SQL Server 2005 (und früher) unterstützen muß
    und deswegen DATETIME verwendet (bzw. muß) - dort gab es die Datentypen und -funktionen nicht.

    Gruß Elmar

    • Als Antwort markiert Peter_CRM Mittwoch, 2. Juni 2010 08:19
    Mittwoch, 26. Mai 2010 13:02

Alle Antworten

  • Hallo Peter,

    stimmt denn Deine Systemzeit oder hängst Du da auch 2 Stunden hinterher? Dann solltest Du die Systemzeit des Servers erst mal korrigieren...

     

    Gruß Klaus

    Dienstag, 25. Mai 2010 14:20
  • Hallo Klaus,

    die Systemzeit stimmt. Es wird automatisch von Sommer auf Winterzeit umgestellt.

    Gruss

    Peter

    Dienstag, 25. Mai 2010 14:22
  • Scheint so, als ob da die UTC Zeit gespeichert wird und nicht die MESZ.

    -- Frank Kalis Microsoft SQL Server MVP Webmaster: http://www.insidesql.org
    Dienstag, 25. Mai 2010 14:31
  • kann ich das ändern ?
    Dienstag, 25. Mai 2010 14:35
  • Da würde ich zunächst einmal erst beim Hersteller nachfragen, ob dem so ist und was er für diesen Fall vorsieht. vielleicht kann man das ja anpassen über eine Einstellung, ohne irgendwelchen Quellcode ändern zu müssen.
    -- Frank Kalis Microsoft SQL Server MVP Webmaster: http://www.insidesql.org
    Dienstag, 25. Mai 2010 14:38
  • okay dann versuch ich da mal mein glück.

    vielen dank für die hilfe

    Dienstag, 25. Mai 2010 14:43
  • Hallo Peter,

    Eine UTC Zeit vermeidet einige Probleme, die bei lokalen Zeiten auftreten können,
    auch Windows verwendet das intern. (Und ich es in den .NET Foren es häufiger habe
    erläutern müssen,  wo einige Verständnisschwierigkeiten auftraten ;-)

    Beim SQL Server 2008 hast Du mit DATETIMEOFFSET einen Datentyp,
    mit dem das Umrechnen möglich ist, siehe Verwenden von Datums- und Zeitdaten
    und Datums- und Uhrzeitdatentypen und zugehörige Funktionen (Transact-SQL)

    Bevor man dort was ändert, sollte man eine Lösung darüber versuchen, z. B.:

    -- DATETIME als UTC Zeit
    DECLARE @zeit datetime = GETUTCDATE();
    
    SELECT @zeit AS UtcDateTime,
    	DATEADD(MINUTE, DATEPART(TZOFFSET, SYSDATETIMEOFFSET()), @Zeit) AS LokaleZeit,
    	SYSDATETIMEOFFSET() AS LokalDateTimeOffset
    
    Wobei der CRM Hersteller evtl. noch SQL Server 2005 (und früher) unterstützen muß
    und deswegen DATETIME verwendet (bzw. muß) - dort gab es die Datentypen und -funktionen nicht.

    Gruß Elmar

    • Als Antwort markiert Peter_CRM Mittwoch, 2. Juni 2010 08:19
    Mittwoch, 26. Mai 2010 13:02