SQL - Timestamp aus AD in Datum wandeln
Guten Tag,
ich verzweifel gerade an einer SQL-Abfrage in der ich einen Timestamp aus dem AD in ein Datum wandeln möchte.
Mein Ursprungsfeld ist ein nvarchar.
Der Wert den ich wandeln möchte ist folgender: 635830039037706000
Zielwert ist 13.11.15
In Excel habe ich es hinbekommen. Hier für habe den Ursprungswert mit dieser Formel umgerechnet "Wert/(8,64*10^11) - 109205" und anschließend in dem Format Datum TT.MM.JJ gewandelt.
Ich scheitere aber daran gerade in SQL kläglich.
Versuche es derzeit mit folgender Abfrage:
CAST((CONVERT(float,Timestamp) / 864000000000 - 109205) AS datetime) AS LastLogon
Ich erhalte jedoch folgende Fehlermeldung:
Meldung 8115, Ebene 16, Status 2, Zeile 1
Arithmetischer Überlauffehler beim Konvertieren von expression in den datetime-Datentyp.
Die Abfrage scheint auch prinzipiell zu laufen, jedoch gibt es Fehler die Leer sind, sprich Accounts ohne Anmeldung.
Bei diesen Werten scheint er zu abzubrechen.
Muss dazu sagen, dass dies auch mit das komplizierteste ist was ich bisher in SQL gemacht habe.
Könnt ihr einem Ahnungslosen hierbei helfen? Danke schön für eure Mühe
ich verzweifel gerade an einer SQL-Abfrage in der ich einen Timestamp aus dem AD in ein Datum wandeln möchte.
Mein Ursprungsfeld ist ein nvarchar.
Der Wert den ich wandeln möchte ist folgender: 635830039037706000
Zielwert ist 13.11.15
In Excel habe ich es hinbekommen. Hier für habe den Ursprungswert mit dieser Formel umgerechnet "Wert/(8,64*10^11) - 109205" und anschließend in dem Format Datum TT.MM.JJ gewandelt.
Ich scheitere aber daran gerade in SQL kläglich.
Versuche es derzeit mit folgender Abfrage:
CAST((CONVERT(float,Timestamp) / 864000000000 - 109205) AS datetime) AS LastLogon
Ich erhalte jedoch folgende Fehlermeldung:
Meldung 8115, Ebene 16, Status 2, Zeile 1
Arithmetischer Überlauffehler beim Konvertieren von expression in den datetime-Datentyp.
Die Abfrage scheint auch prinzipiell zu laufen, jedoch gibt es Fehler die Leer sind, sprich Accounts ohne Anmeldung.
Bei diesen Werten scheint er zu abzubrechen.
Muss dazu sagen, dass dies auch mit das komplizierteste ist was ich bisher in SQL gemacht habe.
Könnt ihr einem Ahnungslosen hierbei helfen? Danke schön für eure Mühe
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 301177
Url: https://administrator.de/contentid/301177
Ausgedruckt am: 16.11.2024 um 07:11 Uhr
8 Kommentare
Neuester Kommentar
Ich habe einfach in diesem einen Fall die Differenz berechnet, das passt aber keines Wegs mit dem Zeitstempel. Ich kann mir nicht vorstellen das dort ein Krummer Wert (693595,012439475) immer als Differenz drauf geschlagen wird, es wird vermutlich einen anderen, eleganteren Rechenweg geben.
Du musst in jedem Fall prüfen, ob deine Berechnung nach einem Schaltjahr noch passt, das kann sich irgendwann verschieben.
Du musst in jedem Fall prüfen, ob deine Berechnung nach einem Schaltjahr noch passt, das kann sich irgendwann verschieben.
Wenn man den genauen Rechenweg kennt wäre das sicherlich eleganter Aber viel anders machen kannst du im Moment nicht, eventuell nur mit convert() arbeiten und die Formate expliziter angeben.
Erklärungen gibt es ja einige:
http://www.experts-exchange.com/articles/811/Converting-Active-Director ...
http://johanmachielse.blogspot.de/2015/05/querying-active-directory-usi ...
letzterer berücksichtigt auch Zeitzonen, beide stimmen aber nicht mit deiner Differenz überein.
Erklärungen gibt es ja einige:
http://www.experts-exchange.com/articles/811/Converting-Active-Director ...
http://johanmachielse.blogspot.de/2015/05/querying-active-directory-usi ...
letzterer berücksichtigt auch Zeitzonen, beide stimmen aber nicht mit deiner Differenz überein.