Frage

Ich arbeite an einer Problemverfolgungsanwendung mit ASP.NET und SQL Server 2005. Während ich die Probleme verfolgt in der dB als datetime gespeichert.

Jetzt ist es meine Anforderung, die Ausgabefrist als "2 Tage übrig" anzuzeigen, wenn nur noch 2 Tage übrig sind, genau so, wenn die Frist bereits über 2 Tage hinter dem Zeitplan auf den Markt kommt. Ich denke, dies könnte mit SQL Server datiff () erreicht werden, aber im Falle der Nachrichten, die ich wie vor 2 Stunden vor 3 Minuten veröffentlicht habe ... oder von 3 Tagen vor 18 Stunden oder ähnlichem ... Wir können die Stunden beseitigen, wenn sie noch 1 Tag zuvor veröffentlicht wurde).

Versuchte Google, konnte aber nichts Nützliches finden. Möchten; Schätzen Sie Ihre freundliche Hilfe wie immer.

Danke im Voraus.

War es hilfreich?

Lösung

Verwenden Sie eine Variation der folgenden Abfrage und passen Sie nach Bedarf an. Ersetzen Sie für andere RDBMS die Datumsfunktionen durch entsprechende Äquivalente.

SELECT  CASE
          WHEN DateValue-GETDATE() >= 1 THEN CAST(DATEPART(dy, DateValue-GETDATE()) AS varchar) + ' day(s) remaining'
          WHEN DateValue-GETDATE() >= 0 THEN CAST(DATEPART(hh, DateValue-GETDATE()) AS varchar) + ' hour(s) remaining'
          /*Note, it's convenient to switch around for negatives*/
          WHEN GETDATE()-DateValue <= '00:59' THEN CAST(DATEPART(mi, GETDATE()-DateValue) AS varchar) + ' minutes(s) overdue'
          WHEN GETDATE()-DateValue <= 1 THEN CAST(DATEPART(hh, GETDATE()-DateValue) AS varchar) + ' hours(s) overdue'
        ELSE
          CONVERT(varchar, DateValue-GETDATE(), 121)
        END AS Time_Scale

Andere Tipps

Anstatt dies in SQL zu tun, können Sie das .NET verwenden Zeitspanne Struktur, um diese Funktionalität zu erhalten.

Sie können es durch bekommen Subtrahieren Ein Datum von einem anderen, und es gibt Ihnen die Stunden/Minuten/Sekunden -Details, die Sie benötigen.

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