J'ai besoin d'une requête TSQL qui retourne toutes les secondes depuis une date de début donnée. Je vais utiliser ceci pour joindre une jointure externe à une autre table pour voir combien d'octets ont été téléchargés chaque seconde. J'utilise Sql Server 2008.TSQL Query - retourne toutes les secondes entre deux dates
Répondre
je tire de la hanche, mais voici un début:
DECLARE @STARTDATE DATETIME
DECLARE @ENDDATE DATETIME
SET @STARTDATE = '05/01/2010'
SET @ENDDATE = GETDATE()
-- Find the seconds between these two dates
SELECT DATEADD(SECOND, Number, @StartDate) AS N
FROM Numbers
WHERE Number < DATEDIFF(SECOND, @STARTDATE, @ENDDATE)
Cela suppose une table appelée nombres, avec une colonne nommée Nombre contenant des valeurs de 1 vers le haut. Pour être en mesure d'obtenir des résultats pour un mois entier, vous aurez besoin d'avoir des valeurs jusqu'à environ 2,5 millions. Je garderais la requête à peut-être un jour, ce qui signifie que la table des nombres peut s'en tirer avec des valeurs inférieures à 100 000.
est ici un grand article sur les tables numéros: http://www.sqlservercentral.com/articles/Advanced+Querying/2547/
L'inscription est obligatoire, mais il est gratuit. Si vous faites une programmation SQL Server sérieuse ce site est très utile.
Vous aurez probablement besoin d'un tableau de nombres auxiliaires pour cela. Avez-vous besoin de toutes les secondes représentées ou pouvez-vous simplement arrondir à la seconde et au groupe les plus proches?
De combien de secondes parlons-nous ici et dans quel format les stockez-vous actuellement? Sont-ils déjà arrondis? Si ce n'est pas alors peut-être pour éviter la surcharge de les arrondir ou de faire une requête de type BETWEEN à chaque fois (ainsi que les DATEADD répétés) peut-être vous pourriez utiliser la réponse DATEDIFF de Marc à l'insertion/mise à jour pour stocker les secondes date puis simplement joindre à la table des nombres en utilisant la colonne numérique calculée.
Code pour créer une table de nombres à partir d'ici http://sqlserver2000.databases.aspfaq.com/why-should-i-consider-using-an-auxiliary-numbers-table.html Juste pour ajouter à la réponse de Brad.
CREATE TABLE dbo.Numbers
(
Number INT IDENTITY(1,1) PRIMARY KEY CLUSTERED
)
WHILE COALESCE(SCOPE_IDENTITY(), 0) <= 1000000
BEGIN
INSERT dbo.Numbers DEFAULT VALUES
END
Vous voudrez peut-être élaborer. Je ne suis probablement pas la seule personne qui ne sache pas de quoi tu parles. – Gabe
Battez-moi. Cela ressemble sûrement à une utilisation parfaite pour une table de chiffres. – BradBrening
DATEDIFF (s , @FirstDate , @SecondDate)
- 1. Mysql: Sélectionnez toutes les données entre deux dates
- 2. Comment afficher toutes les dates entre deux dates données dans SQL
- 3. Trouver des dates manquantes entre deux dates
- 4. Créer un tableau ou une liste de toutes les dates entre deux dates
- 5. différence entre les dates
- 6. Nombre d'années entre deux dates
- 7. C# - Différence entre deux dates?
- 8. Meilleur moyen d'obtenir toutes les dates entre DateA et DateB
- 9. Cron Expression - Toutes les 5 secondes entre 7h et 20h ...?
- 10. MYSQL - Retrouver les horodatages entre les dates
- 11. Supprimer toutes les lignes entre deux chaînes
- 12. dates Constructing dans TSQL
- 13. Différence MySql entre deux horodatages en secondes?
- 14. Modifier l'attribut toutes les secondes
- 15. ACTION_TIME_TICK diffusé toutes les secondes?
- 16. Comment répéter les valeurs entre les deux dates?
- 17. Différence entre les dates
- 18. TSQL-Quelle est la différence entre deux requêtes?
- 19. Comment puis-je vérifier la différence, en secondes, entre deux dates?
- 20. Sélectionnez entre deux dates avec Django
- 21. Créer tableau de mois entre deux dates
- 22. Trouver des objets entre deux dates MongoDB
- 23. Différence de jours entre deux dates
- 24. Trouver toutes les sous-chaînes entre deux chaînes
- 25. Différence de jours entre deux dates Java?
- 26. Java Différence détaillée entre les dates
- 27. nombre de périodes (personnalisées) entre deux dates
- 28. Date de comparaison entre deux dates?
- 29. Calculer le temps entre deux dates
- 30. chèque dimanche tombe entre deux dates
Je pense que 'Number <= DATEDIFF (SECOND, @StartDate, @EndDate)' serait préférable car il peut utiliser un index et vous avez un problème avec l'utilisation de l'alias dans la clause where tel quel. (+1 pour me battre pour obtenir du code) –