Domanda

Sto lavorando su un tema di monitoraggio applicazione con asp.net e SQL Server 2005. Durante l'inseguimento i problemi che sto la memorizzazione del termine come datetime nel database e anche se qualcuno invia un messaggio nella bacheca la data di registrazione / ora è anche sempre memorizzato nel db come datetime.

Ora la mia esigenza è quella di mostrare il termine ultimo problema come "2 giorni a sinistra", quando solo 2 giorni sono a sinistra, proprio così, quando la scadenza è già su di esso di visualizzazione Sud 2 giorni in ritardo. Questo penso che potrebbe essere raggiunto con datediff sql server (), ma in caso di messaggi che ho bisogno di mostrare come pubblicato da 2 ore 3 minuti fa .... o postato da 3 giorni 18 ore fa, o qualcosa di simile ... ( siamo in grado di eliminare le ore se è stato pubblicato ancora 1 giorno prima).

Ho provato Google, ma non riusciva a trovare nulla di utile. Voluto; apprezzo il vostro aiuto gentile come sempre.

Grazie in anticipo.

È stato utile?

Soluzione

Con una variazione sul seguente query, e regolare come necessario. Per gli altri RDBMS di sostituire le funzioni di data con equivalenti appropriate.

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

Altri suggerimenti

Invece di fare questo in SQL, è possibile utilizzare il .NET TimeSpan struct per ottenere questa funzionalità.

È possibile ottenere da sottraendo una data da un altro, e ti dà le ore / minuti / secondi dettagli è necessario.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top