146 votes

Sélectionnez des données dans une plage de dates entre deux dates

J'ai une table nommée Product_Sales et elle contient des données comme suit

ID_produit

Vendu_par

Qté

Date_debut

Date_fin

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 veux sélectionner les données de vente entre deux dates d'une plage de dates ?

Par exemple, je souhaite sélectionner les données de vente de 2013-01-03 à 2013-01-09.

1 votes

À ce jour > 2013-01-03 ET Depuis < 2013-01-09.?

8voto

Kiran K Points 97
SÉLECTIONNER *
DE Product_sales
OÙ (
From_date >= '2013-08-19'
ET To_date <= '2013-08-23'
)
OU (
To_date >= '2013-08-19'
ET From_date <= '2013-08-23'
)

1 votes

Pour une intersection inclusive, vous voudrez ajouter une autre clause OR pour capturer le cas où la date de début est avant le début et la date de fin est après la fin : OR (To_date <= '2013-08-19' AND From_date > = '2013-08-23')

6voto

TechDo Points 11224

Veuillez essayer:

DÉCLARER @FrmDt DATETIME, @ToDt DATETIME
SÉLECTIONNER @FrmDt='2013-01-03', @ToDt='2013-01-09'

SÉLECTIONNER * 
DEPUIS Ventes_produit 
OÙ (@FrmDt ENTRE From_date ET To_date) OU 
    (@ToDt ENTRE From_date ET To_date)

6voto

F5 Buddy Points 356

Il est facile, utilisez cette requête pour sélectionner des données dans une plage de dates entre deux dates

select * from tabblename WHERE (datecolumn BETWEEN '2018-04-01' AND '2018-04-5')

4voto

KDT Points 135

Juste mon avis, je trouve que l'utilisation du format "dd-MMM-yyyy" est le plus sûr, car le serveur de base de données saura ce que vous voulez, quelles que soient les paramètres régionaux sur le serveur. Sinon, vous pourriez potentiellement rencontrer des problèmes sur un serveur dont les paramètres régionaux de date sont yyyy-dd-mm (pour quelque raison que ce soit)

Ainsi:

SELECT * FROM Product_sales 
WHERE From_date >= '03-Jan-2013'
AND To_date <= '09-Jan-2013'

Cela a toujours bien fonctionné pour moi ;-)

4voto

Gestef Points 128
sélectionner * 
à partir de table 
où
( (table.EndDate > '2013-01-05') et (table.StartDate < '2013-01-07' )  )

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X