2010-10-14 3 views
1

J'ai une table linéaire datetime basée dans MySQL et un serveur SQL pour un système de collecte de données basé sur le temps. Il doit y avoir une nouvelle entrée dans cette table qui sera horodatée exactement toutes les 10 secondes. Parfois, la source de collecte de données s'arrête pendant un certain temps et revient, à quel point les données les plus récentes sont insérées dans la table, et un nouveau thread est créé pour commencer à remplir les «trous».Trous de recherche SQL dans un tableau linéaire basé sur le temps

Existe-t-il une instruction SQL que je pourrais utiliser pour trouver le dernier «trou» dans les dix secondes, de sorte que je saurais où commencer à demander des données de sauvegarde?

Merci!

+0

Je suppose que vous aurez besoin d'utiliser une requêtes différentes pour MySQL et SQL Server. –

Répondre

1

pour SQL Server, essayez quelque chose comme ceci:

SELECT TOP 1 
    DATEADD(second,-10,t1.YourDateColumn) 
    FROM YourTable t1 
    WHERE NOT EXISTS (SELECT 1 
          FROM YourTable t2 
          WHERE DATEADD(second,-10,t1.YourDateColumn) = t2.YourDateColumn) 
    ORDER BY t1.YourDateColumn DESC 
+0

Un grand merci, je pense que cela fonctionne essentiellement. Voici votre requête pour MySQL: SELECT * FROM source1 t1 O WH N'EXISTE PAS ( SELECT 1 FROM source1 t2 O WH t2.sample_time = addtime (t1.sample_time, sec_to_time (10))); – Judas

Questions connexes