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.?

1voto

jspooner Points 3963

Voici une requête pour trouver toutes les ventes de produits qui étaient en cours pendant le mois d'août

  • Trouver les ventes de produits qui étaient actives pendant le mois d'août
  • Inclure tout ce qui a commencé avant la fin d'août
  • Exclure tout ce qui s'est terminé avant le 1er août

Ajoute également une instruction CASE pour valider la requête

SELECT start_date, 
       end_date, 
       CASE 
         WHEN start_date <= '2015-08-31' THEN 'true' 
         ELSE 'false' 
       END AS started_before_end_of_month, 
       CASE 
         WHEN NOT end_date <= '2015-08-01' THEN 'true' 
         ELSE 'false' 
       END AS did_not_end_before_begining_of_month 
FROM   product_sales 
WHERE  start_date <= '2015-08-31' 
       AND end_date >= '2015-08-01' 
ORDER  BY start_date;

1voto

Code Points 467
DECLARE @monthfrom int=null,
@yearfrom int=null,
@monthto int=null,
@yearto int=null,
@firstdate DATE=null,
@lastdate DATE=null

SELECT @firstdate=DATEADD(month,@monthfrom-1,DATEADD(year,@yearfrom-1900,0)) /*Setting First Date using From Month & Year*/
SELECT @lastdate= DATEADD(day,-1,DATEADD(month,@monthto,DATEADD(year,@yearto-1900,0)))/*Setting Last Date using From Month & Year*/

SELECT *  FROM tbl_Record
WHERE  (DATEADD(yy, Année - 1900, DATEADD(m, Mois - 1, 1 - 1)) BETWEEN CONVERT(DATETIME, @firstdate, 102) AND 
CONVERT(DATETIME, @lastdate, 102))

-1voto

Adeel Ahmed Points 1541

Vous devriez comparer les dates en SQL exactement comme vous comparez les valeurs numériques,

SELECT * FROM Product_sales
WHERE From_date >= '2013-01-01' AND To_date <= '2013-01-20'

-1voto

Abdirazack Points 40

C'est facile, utilisez cette requête pour trouver ce que vous voulez.

sélectionnez * from Product_Sales où From_date <='2018-04-11' et To_date>='2018-04-11'

0 votes

Ça ne fonctionne pas

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