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.
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#
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');
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.