Umrechnung des Inventurdatums

Post Reply
Balack
Posts: 64
Joined: 28. Apr 2005, 13:18
Location: Hamburg
Contact:

Umrechnung des Inventurdatums

Post by Balack » 25. Jul 2008, 10:51

Hallo!
Das Datum der letzten Inventur wird in der Datenbank in einem mir unbekannten Format gespeichert.
Sieht z.B. so aus:
dbo.InvComputer.InvDate = 1207000800

Um diesen Wert mit anderen Datumswerten zu vergleichen muss ich den in ein "normales deutsches Datum" umrechnen.
(Ich möchte mit der SQL-Funktion DATEDIFF die Differenz zwischen zwei Datumsfeldern ermitteln)

Kann mir jemand verraten, wie ich das mit einem SQL-Befehl mache?

Vielen Dank
Orge

User avatar
Hendrik_Ambrosius
Moderator
Moderator
Posts: 8094
Joined: 13. Dec 2004, 23:10
Location: Adendorf/Lüneburg

Post by Hendrik_Ambrosius » 25. Jul 2008, 17:24

Bei uns werden die Daten glaube ich immer als Differenz vom 1.1.1970 gespeichert. Haben folgenden String in einem SQL-Script gefunden. Hilft Ihnen das?

WOLDateAndTime = DATEDIFF(ss, '1.1.1970 01:00:00', getdate())
Hendrik Ambrosius / Senior Presales Consultant
Mobile: +49 172 408 4447 | hendrik.ambrosius@matrix42.com
Matrix42 GmbH | Elbinger Straße 7 | 60487 Frankfurt am Main | Germany | www.matrix42.com

Disclaimer: I participate in this forum on a voluntary basis. Views expressed are not necessarily those of Matrix42 or of the support team.

Balack
Posts: 64
Joined: 28. Apr 2005, 13:18
Location: Hamburg
Contact:

Post by Balack » 28. Jul 2008, 11:52

Ja, dass hat geholfen. Vielen Dank.
Wozu ich das brauche?
In das Patchmanagement-Paket habe ich einen zusätzlichen Eintrag eingebaut, der das Datum des letzten Patchlaufes in die Registry schreibt. Dieser wird dann mit dem Inventory ausgelesen.
Die SQL-Abfrage vergleicht nun dieses Patchdatum mit dem Inventurdatum und zeigt die PCs, bei denen zwischen diesen beiden Daten eine Differenz größer 15 Tage liegt. Die SQL-Abfrage sieht dann so aus:

Code: Select all

SELECT DISTINCT 
                      dbo.Clients.client_id, dbo.Clients.name, dbo.Clients.InventoryID, dbo.Clients.bDelete, dbo.Clients.[Domain], dbo.Clients.os_type, dbo.Clients.type, 
                      dbo.Clients.MACAddress
FROM         dbo.Clients INNER JOIN
                      dbo.InvUserDef ON dbo.Clients.client_id = dbo.InvUserDef.client_id INNER JOIN
                      dbo.InvComputer ON dbo.Clients.client_id = dbo.InvComputer.client_id AND DATEDIFF(ss, '1.1.1970 01:00:00', dbo.InvUserDef.[Value]) 
                      < dbo.InvComputer.InvDate - 1296000
WHERE     (dbo.Clients.os_type <> 17) AND (dbo.Clients.os_type <> 18) AND (dbo.Clients.os_type <> 19) AND (dbo.Clients.os_type <> 21) AND 
                      (dbo.Clients.os_type <> 128) AND (dbo.Clients.bDelete < 2) AND (dbo.Clients.client_id IN
                          (SELECT     client_id
                            FROM          InvUserDef
                            WHERE      UserDefinedField LIKE 'Letzter Patchlauf am:')) AND (dbo.Clients.client_id IN
                          (SELECT     client_id
                            FROM          InvUserDef
                            WHERE      Value IS NOT NULL)) AND (dbo.InvUserDef.UserDefinedField LIKE 'Letzter Patchlauf am:') AND (dbo.InvUserDef.[Value] <> '')

Post Reply

Return to “Inventory”

Who is online

Users browsing this forum: No registered users and 5 guests