J'ai une requête qui est censée tirer des enregistrements de plusieurs tables en utilisant une jointure, et tous les filtrer en fonction d'une plage de dates. Il semble tirer un groupe aléatoire d'enregistrements - il ne retourne pas tous les enregistrements dans la jointure, ce que j'imagine s'il ignorait complètement les dates, mais les enregistrements qu'il tire ne correspondent pas aux critères de date.mysql sélectionner la requête avec des dates ne pas retourner les enregistrements corrects
Voici la requête; Je l'ai essayé de deux manières différentes avec le même résultat.
Option 1:
SELECT p.PurchActvtyID, p.PurchAmt, p.CcAuthCode, p.PurchDT, v.VoucherNbr,
a1.name as billName, a1.company as billCompany, a1.address1
FROM arrc_PurchaseActivity p
LEFT JOIN arrc_Voucher v ON p.VoucherID = v.VoucherID
LEFT JOIN jos_customers_addresses a1 ON p.AcctID = a1.id
where v.TypeFlag='S' or v.TypeFlag is null
and p.PurchDT between '20101201000000' and '20101209235959' order by v.ActivatedDT asc
(Dans ce cas, nous avons fois ajouté à la programmation début et de fin de gamme nous assurer d'obtenir tous les enregistrements de 00h01 à la date de début à 11:59 PM à la date de fin)
Option 2:.
SELECT p.PurchActvtyID, p.PurchAmt, p.CcAuthCode, p.PurchDT, v.VoucherNbr,
a1.name as billName, a1.company as billCompany, a1.address1
FROM arrc_PurchaseActivity p
LEFT JOIN arrc_Voucher v ON p.VoucherID = v.VoucherID
LEFT JOIN jos_customers_addresses a1 ON p.AcctID = a1.id
where v.TypeFlag='S' or v.TypeFlag is null
and p.PurchDT between '2010-12-01' and '2010-12-09' order by v.ActivatedDT asc
Ce que je veux revenir est des dossiers avec p.PurchDT égal à 2010-10-28 16:33:13, 2010-11- 11 10:37:30, et plusieurs autres. Les bonnes nouvelles sont qu'il tire dans tous les dossiers avec des dates entre ceux indiqués dans la question; la mauvaise nouvelle est que c'est de manière aléatoire (d'après ce que je peux dire) tirer d'autres records qui ne correspondent pas aux critères.
Quelqu'un peut-il me diriger dans la bonne direction? J'aurais pu jurer que ce code fonctionnait il y a plusieurs semaines, mais maintenant il ne l'est pas, même s'il n'y a pas eu de changements.
Astuce: 'BETWEEN' ne fonctionne pas très bien pour les plages de dates car la fin de la plage est inclusive. 'AND col> = startdate ET col