J'ai une table nommée Product_Sales
et elle contient des données comme celle-ci
Product_ID | Sold_by | Qty | From_date | To_date
-----------+---------+-----+------------+-----------
3 | 12 | 7 | 2013-01-05 | 2013-01-07
6 | 22 | 14 | 2013-01-06 | 2013-01-10
8 | 11 | 9 | 2013-02-05 | 2013-02-11
Maintenant, quelle est la requête si je souhaite sélectionner des données de vente entre deux dates dans une plage de dates?
Par exemple, je souhaite sélectionner les données de vente de 2013-01-03
à 2013-01-09
.
Réponses:
Comme vous pouvez le voir, il existe deux façons de faire avancer les choses:
Evidemment, la seconde voie est beaucoup plus simple (seulement deux cas contre quatre).
Votre SQL ressemblera à:
la source
WHERE NOT
condition, retourner les opérateurs et ajouter un égal fait également le travail:SELECT * FROM Product_sales WHERE From_date <= @RangeTill OR To_date >= @RangeFrom
Vous devez couvrir toutes les possibilités. From_Date ou To_Date peut être compris entre votre plage de dates ou les dates d'enregistrement peuvent couvrir toute la plage.
Si l'une des dates
From_date
ouTo_date
est comprise entre les dates, ouFrom_date
est inférieure à la date de début etTo_date
est supérieure à la date de fin; alors cette ligne doit être renvoyée.la source
Essayez la requête suivante pour obtenir des dates comprises entre la plage:
la source
start_date
mais qui se sont terminées entrestart_date
etend_date
. D'un autre côté, la question n'est pas assez claire, je suppose, nous ne savons pas si nous devrions prendre des ventes strictement entre des dates données ou des dates qui incluent partiellement la plage de dates, mais qui peuvent s'étendre d'un côté ou de l'autre ou des deux? Le problème fondamental est donc que la question n'est pas claire, je suppose.la source
Cela couvre toutes les conditions que vous recherchez.
la source
la source
S'il vous plaît essayez:
la source
Juste mes 2 cents, je trouve que l'utilisation du format "jj-MMM-aaaa" est la plus sûre car le serveur de base de données saura ce que vous voulez indépendamment des paramètres régionaux sur le serveur. Sinon, vous pourriez rencontrer des problèmes sur un serveur dont les paramètres régionaux de date sont aaaa-jj-mm (pour quelque raison que ce soit)
Donc:
Cela a toujours bien fonctionné pour moi ;-)
la source
Cela fonctionne sur SQL_Server_2008 R2
la source
la source
Cette requête vous aidera:
la source
la source
Vérifiez cette requête, j'ai créé cette requête pour vérifier si la date d'arrivée sur le tour avec des dates de réservation
cela retransmettra les détails qui se chevauchent, pour obtenir les détails qui ne se chevauchent pas, puis supprimera le 'NON' de la requête
la source
Vous pouvez également essayer d'utiliser les fragments suivants:
la source
C'est facile, utilisez cette requête pour rechercher des données sélectionnées dans la plage de dates entre deux dates
la source
Vous devez comparer les dates en SQL comme vous comparez les valeurs numériques,
la source
Voici une requête pour trouver toutes les ventes de produits en cours au cours du mois d'août
Ajoute également une instruction case pour valider la requête
la source
la source
c'est facile, utilisez cette requête pour trouver ce que vous voulez.
la source