Question

Je travaille sur une application de suivi des problèmes avec ASP.NET et SQL Server 2005. En suivant les problèmes, je stockage la date limite en tant que DateTime dans la base de données et si quelqu'un publie un message dans le babillard électronique, la date / heure de la publication obtient également stocké dans la base de données sous forme de DateTime.

Maintenant, mon exigence est de montrer la date limite du problème comme "2 jours à gauche" alors que seulement 2 jours sont laissés, juste comme ça lorsque la date limite est déjà terminée, ADD affiche 2 jours en retard. Je pense que cela pourrait être réalisé avec SQL Server Dadiff (), mais dans le cas des messages, je dois afficher comme publié par 2 heures il y a 3 minutes ... ou publié par 3 jours il y a 18 heures ou quelque chose de similaire ... ( Nous pouvons éliminer les heures si elle était affichée même 1 jour auparavant).

J'ai essayé Google mais n'a rien trouvé d'utile. Aurait; Appréciez votre aimable aide comme toujours.

Merci d'avance.

Était-ce utile?

La solution

Utilisez une variation sur la requête suivante et ajustez au besoin. Pour les autres SGBDR, remplacez les fonctions de date par des équivalents appropriés.

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

Autres conseils

Au lieu de le faire dans SQL, vous pouvez utiliser le .NET Casse-temps struct pour obtenir cette fonctionnalité.

Vous pouvez l'obtenir par soustraction Une date d'une autre, et cela vous donne les détails des heures / minutes / secondes dont vous avez besoin.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top