Comparaison datetime

Résolu
gabs77 Messages postés 379 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 8 octobre 2008 - 19 janv. 2007 à 09:12
gabs77 Messages postés 379 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 8 octobre 2008 - 23 janv. 2007 à 09:28
bonjour,

je suis actuellement sur un projet auquel je suis confronté a un petit probleme de requete

je souhaite dans ma requete compter le nombre de données qui ont été enregistrés les 5 dernières minutes
pour cela dans MA_TABLE j'ai 2 propriétés : Date et l'information enregistré.
la date est enregistré sous la forme 19/01/2007 08:15:30
et j'ai créer une view dans ma base sql server pour retourner la date systeme a travers la requete suivante :
CREATE VIEW V_Date
AS SELECT CURRENT_TIMESTAMP AS DateTime

voici a quoi ressemble le debut de la requete :
SELECT COUNT(MA_TABLE.*) AS compte
    FROM MA_TABLE, V_Date
    WHERE (DateTime - MA_TABLE . DATE)  <= ??? //5minutes

4 réponses

gabs77 Messages postés 379 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 8 octobre 2008
23 janv. 2007 à 09:28
j'ai trouvé la solution a mon probleme c bon

voici la requete sous SQL server qui est l'équivalent sous ORACLE :

ORACLE :

SELECT COUNT(*) AS compte
FROM ma_table  
WHERE (sysdate - DATE)*24*60 <= 5

      sysdate retourne la date système sous ORACLE

SQL SERVER :
 
SELECT COUNT(*)AS compte
FROM ma_table
WHERE DATEDIFF(minute, DATE, GETDATE() )<=5

      GETDATE() retourne la date système sous SQL SERVER
      DATEDIFF fonction qui retourne la différence en l'unité désiré entre 2 datetime
                       ex : DATEDIFF(Partie de date, date fin, date début)
      
Partie de date |Abréviations |Description |----
year |yy, yyyy, Année, ----
quart |qq, q, Trimestre, ----
month |mm, m, Mois, ----
dayofyear |dy, y, Jour de l'année (1 - 365), ----
day |dd, d, Jour, ----
weeek |wk, ww, Semaine, ----
weekday |dw, Jour de la semaine, ----
hour |hh, Heures, ----
minute |min, Minutes, ----
second |ss, s, Secondes, ----
millisecond |ms, Millisecondes
3
ThWilliam Messages postés 418 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 26 novembre 2013 4
19 janv. 2007 à 10:00
Salut gabs77,

Un TDateTime est en fait une variable de typle double qui stocke dans sa partie fractionnaire la partie écoulée des 24 heures.Donc, en minutes 24 * 60 1440 min5 minutes 5/1440 0,00347222

var D1, D2 : TDateTime;

if D2 - D1 >= 0.00347222 then .... // D2 est au moins supérieur à D1 de 5 minutes

A +
Thierry
0
sylvunix Messages postés 93 Date d'inscription mardi 11 avril 2006 Statut Membre Dernière intervention 4 mars 2009
19 janv. 2007 à 12:31
Sous Oracle la requête aurait été :

select count(1) from MA_TABLE where to_number(SYSDATE-MA_TABLE.DATE)*1440 < 5;

Mais je ne sais pas si cette requête est portable telle quelle sous SQL Server.

sylvunix
0
gabs77 Messages postés 379 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 8 octobre 2008
19 janv. 2007 à 15:12
thwilliam,
je te remercie mais cela ne répond pas à ma question car c'est dans la requête SQL que je veux effectuer la condition
car g une table car enregistre tous les colis lus dans la journée en enregistrant le datetime donc sa peut aller jusqu'à plus de 2000 colis
et je veux par la requete compter le nombre d'occurence dans ma table qui a été enregistrés ces 5 dernières minutes.
le traitement est donc dans la requete du meme style que l'a montré sylvunix mais sous sql server 

sylvunix,
le fait est que sur oracle je sais faire mais je ne sais pas le faire sur SQL Server

Je vous remercie quand même d'avoir tenté de m'aider.
0
Rejoignez-nous