Frage

Mit SQL Server 2008 möchte ich die Timesspan in Sekundenschnelle berechnen, die zwischen zweimal aufgetreten sind.

Das Startdatum ist der Zeitstempel des letzten Vorfalls, bei dem eine bestimmte ID vorhanden ist (wenn der Filter wahr ist), die Zeit von diesem Zeitstempel -Datensatz erhalten und einen detiff () gegen die aktuelle Verarbeitungszeit durchführen und einen Wert zurückgeben, @ LastEventTimespan in Sekunden.

DECLARE @CurrentProcessTime DATETIME
DECLARE @LastEventTimespan DATETIME
SET @CurrentProcessTime = GetDate()

-- find the timespan since the last session event
-- DATEDIFF ( datepart , startdate , enddate )

SELECT MAX(PageVisitEventID) AS LastPageVisitEventID, @LastEventTimespan = DATEDIFF(second , DateAdded , @CurrentProcessTime )
FROM PageVisitEvents
WHERE UserID = @UserID
GROUP BY LastPageVisitEventID

Ich dachte, ich könnte die maximale ID des Filters erhalten und entsprechend verarbeiten, kann aber nicht in der Lage sein, den @LastEventTimeSpan festzulegen, aber der Versuch, einen Wert zuzuweisen, wenn datenresistent ein No-Nein ist.

Wie kann ich das umgehen?

Vielen Dank.

War es hilfreich?

Lösung

Ich denke du willst so etwas.

DECLARE @LastEventTimespan INT

SELECT TOP 1 @LastEventTimespan = DATEDIFF(SECOND, DateAdded, GETDATE())
FROM PageVisitEvents  
WHERE UserID = @UserID
ORDER BY PageVisitEventID DESC

Dies berechnet die Differenz in Sekunden zwischen Dateaderded für den höchsten Wert von PageViseVEVENTID für einen bestimmten Benutzer und die aktuelle DateTime. Ich habe den Datentyp von geändert @LastEventTimespan zu INT Weil es wahrscheinlich sinnvoller ist, wenn es um Sekunden geht.

Andere Tipps

Sie können die Auswahlanweisung durch diese ersetzen:

SELECT TOP 1
    @LastEventTimespan = DATEDIFF(second , DateAdded , @CurrentProcessTime )
FROM PageVisitEvents
WHERE UserID = @UserID
ORDER BY PageVisitEventID desc

Ich habe solche Fragen oft gemacht und hatte nie Probleme.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top