web-dev-qa-db-fra.com

Sélectionner une requête avec une condition de date

Je souhaite récupérer les enregistrements à certaines dates après d/mm/yyyy, ou après d/mm/yyyy et avant d/mm/yyyy, Comment puis-je le faire ?

SELECT date
FROM table
WHERE date > 1/09/2008;

et

SELECT date
FROM table
WHERE date > 1/09/2008;
AND date < 1/09/2010

Ça ne marche pas.

11
help_pls

Attention, vous demandez involontairement "où la date est supérieure à un divisé par neuf, divisé par deux mille huit".

Mettez # signe autour de la date, comme ceci #1/09/2008#

26
smirkingman

Le caractère point-virgule est utilisé pour terminer l'instruction SQL.

Vous pouvez utiliser des signes # Autour d'une valeur de date ou utiliser la conversion d'Access (ACE, Jet, peu importe) en DATETIME function CDATE(). Comme son nom l'indique, DATETIME inclut toujours un élément time donc vos valeurs littérales doivent refléter ce fait. Le format de date ISO est parfaitement compris par le moteur SQL.

Mieux vaut ne pas utiliser BETWEEN pour DATETIME dans Access: il est modélisé en utilisant un type à virgule flottante et de toute façon le temps est un continuum;)

DATE et TABLE sont des mots réservés dans les normes SQL, ODBC et Jet 4.0 (et probablement au-delà), il est donc préférable d'éviter les noms d'éléments de données:

Vos prédicats suggèrent une représentation ouverte-ouverte des périodes (où ni sa date de début ni sa date de fin ne sont incluses dans la période), ce qui est sans doute le choix le moins populaire. Cela me fait me demander si vous vouliez utiliser une représentation fermée-ouverte (où ni sa date de début n'est incluse mais la période se termine immédiatement avant la date de fin):

SELECT my_date
  FROM MyTable
 WHERE my_date >= #2008-09-01 00:00:00#
       AND my_date < #2010-09-01 00:00:00#;

Alternativement:

SELECT my_date
  FROM MyTable
 WHERE my_date >= CDate('2008-09-01 00:00:00')
       AND my_date < CDate('2010-09-01 00:00:00'); 
12
onedaywhen
select Qty, vajan, Rate,Amt,nhamali,ncommission,ntolai from SalesDtl,SalesMSt where SalesDtl.PurEntryNo=1 and SalesMST.SaleDate=  (22/03/2014) and SalesMST.SaleNo= SalesDtl.SaleNo;

Cela devrait fonctionner.

1
dnyaneshwar