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
Umrechnung des Inventurdatums
-
Hendrik_Ambrosius
- Moderator

- Posts: 8094
- Joined: 13. Dec 2004, 23:10
- Location: Adendorf/Lüneburg
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())
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.
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.
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:
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] <> '')Who is online
Users browsing this forum: No registered users and 5 guests