Je veux afficher l'heure comme mr.xxx login il ya 1 minute ou 1 hor ago ou 2 journées de cela ou il ya 1 mois ou 1year. comment puis-je écrire la requête à afficher comme ça [par exemple dans notre stackoverflow nous voyons mr.xx rejoint il y a 5 jours. il demande la question il y a 2 minutes] aidez-moi s'il vous plaîtrequête pour datetime
Répondre
Cet exemple devrait fonctionner sur n'importe quelle version de SQL Server.
Il est plus bavard que nécessaire pour clarifier le fonctionnement.
--create test data
create table #t
(id int
,lastTime datetime
)
insert #t
select 1,dateadd(mi,-1,getdate())
union select 2,dateadd(hh,-1,getdate())
union select 3,dateadd(dd,-1,getdate())
union select 4,dateadd(mm,-1,getdate())
union select 5,dateadd(yy,-1,getdate())
union select 6,dateadd(yy,-5,getdate())
union select 7,NULL
-- carry out formatting to handle pluralisation
SELECT id
,ISNULL(lastAction,'Never')
+ CASE WHEN lastVal > 1
THEN 's ago'
WHEN lastVal = 1
THEN ' ago'
ELSE ''
END
FROM
(
-- Use coalesce to select the first non-null value from the matrix
SELECT id
,COALESCE(CAST(years as VARCHAR(20)) + ' year'
,CAST(months as VARCHAR(20)) + ' month'
,CAST(days as VARCHAR(20)) + ' day'
,CAST(hours as VARCHAR(20)) + ' hour'
,CAST(minutes as VARCHAR(20)) + ' minute'
,CAST(secs as VARCHAR(20)) + ' second'
) as lastAction
,COALESCE(years
,months
,days
,hours
,minutes
,secs
) as lastVal
FROM
(
-- create a matrix of elapsed time
SELECT id
,datediff(ss,lastTime,getdate()) secs
,NULLIF(datediff(mi,lastTime,getdate()),0) minutes
,NULLIF(datediff(hh,lastTime,getdate()),0) hours
,NULLIF(datediff(dd,lastTime,getdate()),0) days
,NULLIF(datediff(mm,lastTime,getdate()),0) months
,NULLIF(datediff(yy,lastTime,getdate()),0) years
from #t
) as X
) AS Y
wow bonne requête Ed harper merci –
Bonne réponse Ed +1 – kevchadders
Je m'attends à ce que vous gardiez un journal de la dernière connexion des utilisateurs dans une table SQL dans votre base de données, qui peut être utilisée pour l'historique d'audit.
Avec cette information, vous pouvez créer une procédure stockée qui peut récupérer des informations lorsque l'utilisateur connecté dernier.
par exemple Exemple SQL pour la dernière connexion (IN DAYS)
DECLARE @LoggedIn AS DATETIME
SET @LoggedIn = '01 Apr 2009'
SELECT DATEDIFF(dd, @LoggedIn, GETDATE()) AS 'Last Logged In (DAYS)'
ok merci kevchadders –
- 1. Utilitaire DateTime pour ASP.net
- 2. Comment filtrer la requête en sqlalchemy par année (colonne datetime)
- 3. Aide avec Google App Engine requête et datetime
- 4. requête LINQ pour un forum
- 5. Ruby datetime approprié pour la comparaison mysql
- 6. Sql Ansi pour gérer les valeurs DateTime
- 7. MySQL DATETIME question
- 8. champ datetime MySQL
- 9. Filtres LinqToSQL DateTime?
- 10. Conversion de datetime XML en datetime SQL
- 11. DateTime Variable
- 12. Ruby: Problème d'horodatage/datetime Mysql
- 13. MS SQL Joindre sur dateTime
- 14. DateTime package
- 15. requête XPath pour correspondre en fonction des combinaisons d'éléments enfants
- 16. Datetime en java et mappage datetime par défaut en hibernation
- 17. Colonne XML typée avec l'élément DateTime - DateTime est convertie
- 18. Conversion chaîne à problème datetime
- 19. asp.net formatage dateTime dans gridview
- 20. C# requête LINQ pour sélectionner uniquement la première date dans un mois à partir de la liste <DateTime>
- 21. Crystal Reports DateTime Formatage
- 22. DataSet.Select et DateTime
- 23. soustraction datetime .net
- 24. datetime strptime python joker
- 25. Analyse des chaînes DateTime
- 26. DateTime Xml Deserialization
- 27. C++ DateTime classe
- 28. Date vs DateTime
- 29. Convertir DateTime en DateTime qui fonctionne avec SQL Server?
- 30. Test NUnit DateTime sans temporisation .Net ou fonction DateTime
Vous devriez certainement le faire dans votre code frontal (C#, VB, peu importe) plutôt qu'une requête SQL. – LukeH
@surya: alors vous devriez faire la chose polie et appropriée et accepter la meilleure réponse/celle qui a vraiment résolu votre problème. Pour accepter la réponse, veuillez cliquer sur la coche à gauche de la réponse sous le "0" avec les flèches haut et bas. Si quelqu'un vous aide, veuillez avoir la gentillesse d'accepter la réponse. –