Je cherche une bonne instruction SQL pour sélectionner toutes les lignes du jour précédent à partir d'une table. La table contient une colonne datetime. J'utilise SQL Server 2005.Instruction SQL pour sélectionner toutes les lignes du jour précédent
Répondre
obtenir aujourd'hui pas de temps:
SELECT dateadd(day,datediff(day,0,GETDATE()),0)
obtenir yestersday pas de temps:
SELECT dateadd(day,datediff(day,1,GETDATE()),0)
requête pour toutes les lignes de seulement hier:
select
*
from yourTable
WHERE YourDate >= dateadd(day,datediff(day,1,GETDATE()),0)
AND YourDate < dateadd(day,datediff(day,0,GETDATE()),0)
ne peut pas tester dès maintenant, mais:
select * from tablename where date >= dateadd(day, datediff(day, 1, getdate()), 0) and date < dateadd(day, datediff(day, 0, getdate()), 0)
Pour obtenir la valeur "aujourd'hui" dans SQL:
convert(date, GETDATE())
Pour obtenir "hier" :
DATEADD(day, -1, convert(date, GETDATE()))
Pour obtenir "aujourd'hui moins X jours": changez le -1 en -X.
Donc, pour toutes les lignes d'hier, vous obtenez:
select * from tablename
where date >= DATEADD(day, -1, convert(date, GETDATE()))
and date < convert(date, GETDATE())
« date » du type de données ne marche pas exister dans SQL Server 2005. Lorsque j'utilise datetime au lieu des séjours de valeur de temps et le calcul ne se passe pas de 0h du matin à 12h mais à partir du moment où vous exécutez la requête – rudimenter
Mon erreur. Je n'ai pas vu que vous traitiez avec SQL Server 2005. En effet, mon code fonctionne uniquement pour SQL Server 2008. – Konamiman
J'ai toujours pensé que DATEADD (jour, ....) était une perte, il suffit d'ajouter ou de soustraire le nombre de jours par rapport à la date: _SELECT GETDATE() - 1_ –
C'est un très vieux fil, mais voici mon point de vue. Plutôt que deux clauses différentes, une plus grande que moins de. J'utilise cette syntaxe ci-dessous pour sélectionner les enregistrements d'une date. Si vous voulez une plage de dates, alors les réponses précédentes sont le chemin à parcourir.
SELECT * FROM TABLE_NAME WHERE
DATEDIFF(DAY, DATEADD(DAY, X , CURRENT_TIMESTAMP), <column_name>) = 0
Dans le cas X ci-dessus sera -1 pour les dossiers d'hier
SELECT * from table_name where date_field = DATE_SUB(CURRENT_DATE(),INTERVAL 1 DAY);
Une autre façon de le dire "Yesterday" ...
Select * from TABLE
where Day(DateField) = (Day(GetDate())-1)
and Month(DateField) = (Month(GetDate()))
and Year(DateField) = (Year(getdate()))
Cela ne fonctionnera pas en théorie bien le 1er janvier, ainsi que le premier jour de chaque mois. Mais à la volée c'est efficace.
Il semble que la réponse évidente manquait. Pour obtenir toutes les données d'une table (Ttable) où la colonne (DatetimeColumn) est un datetime avec un horodatage de la requête suivante peut être utilisée:
SELECT * FROM Ttable
WHERE DATEDIFF(day,Ttable.DatetimeColumn ,GETDATE()) = 1 -- yesterday
Cela peut facilement être changé aujourd'hui, le mois dernier, l'année dernière, etc.
cela devrait le faire:
WHERE `date` = CURDATE() - INTERVAL 1 DAY
Dans SQL Server comme cela:
where cast(columnName as date) = cast(getdate() -1 as date)
Vous devez convertir les deux côtés de l'expression à ce jour pour éviter les problèmes de formatage de l'heure.
Si vous avez besoin de contrôler l'intervalle plus en détail, alors vous devriez essayer quelque chose comme:
declare @start datetime = cast(getdate() - 1 as date)
declare @end datetime = cast(getdate() - 1 as date)
set @end = dateadd(second, 86399, @end)
- 1. Quelle instruction SQL puis-je utiliser pour ré-exécuter le déclencheur et mettre à jour toutes les lignes d'une table?
- 2. Sélectionner par programme toutes les lignes d'un jqGrid?
- 3. SQL sélectionner des lignes distinctes
- 4. Mise à jour de toutes les lignes d'une seule colonne
- 5. requête SQL pour sélectionner des lignes non référencées
- 6. Ignorer les lignes ayant les mêmes champs suivants comme précédent
- 7. Comment puis-je sélectionner toutes les lignes et mettre à jour un champ avec son code de hachage?
- 8. Comment faire une instruction SQL pour renvoyer toutes les lignes lorsqu'une variable est vide, sinon renvoyer uniquement correspond
- 9. Comment créer une fonction permettant de déterminer les dates du dernier jour du mois précédent?
- 10. Obtenir les dates du premier et du dernier jour du mois précédent en C#
- 11. Sélectionner toutes les colonnes de toutes les tables dans SQL Server 2008
- 12. Est-il possible de mettre à jour 3 lignes de SQL dans 1 instruction SQL mise à jour
- 13. SQL: "NOT IN" alternative pour sélectionner des lignes basées sur des valeurs de * différentes * lignes?
- 14. requête SQL Pour supprimer les lignes
- 15. SQL: Numérotation des lignes renvoyées par une instruction SELECT
- 16. TSQL: Récupère toutes les lignes pour l'ID donné
- 17. C# .Net Obtenir le dernier jour du mois précédent à partir de la date du jour
- 18. Sélectionnez requête dans SQL + Toutes les valeurs dans les colonnes
- 19. MySQL: Comment sélectionner toutes les lignes d'une table SAUF la dernière
- 20. jQuery - comment sélectionner toutes les lignes de table entre deux rangées de table en même table
- 21. extraction de sous-requête - Toutes les lignes
- 22. affichant toutes les lignes dans un calcul?
- 23. Instruction SQL SELECT Tricky
- 24. Comment sélectionner N lignes aléatoires en utilisant SQL pur?
- 25. Aidez-moi avec ce SQL: 'le faire pour toutes les lignes TABLE
- 26. SQL - Vérifiez la table pour les nouvelles lignes?
- 27. Quelle est la requête SQL pour lister toutes les lignes ayant 2 sous-lignes de colonne en tant que doublons?
- 28. Comment sélectionner les 5 dernières lignes d'un tableau sans trier?
- 29. Comment sélectionner les 10 premières lignes d'une table sans trier?
- 30. Instruction SQL aide requise
SI J'AI BESOIN DE TEMPS AUSSI? – Neo
@ashuthinks, votre commentaire n'a aucun sens pour moi. La question initiale demande comment obtenir les lignes de la journée précédente. Pour ce faire, vous devez être en mesure d'obtenir la date du jour seulement (pas de temps) et la date d'hier seulement (pas de temps). Vous utilisez ces dates (intemporelles) dans la clause WHERE. Cependant, le 'SELECT *' retournera toutes les dates avec leurs heures d'origine. –
datediff indique "Erreur de nombre de paramètres incorrect". et http://stackoverflow.com/a/18926156/3007408 dit que datediff ne peut utiliser que 2 paramètres. Toute solution?? – Sp0T