我有一个查询应该使用连接从多个表中拉出记录,并根据日期范围对它们进行过滤。它似乎是随机抽取一组记录 - 它不会返回连接中的所有记录,我想如果它完全忽略了日期,但它所做的记录与日期标准不匹配。mysql选择带日期的查询,但没有返回正确的记录
下面是查询;我用相同的结果尝试了两种不同的方式。
选项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
(在这种情况下,我们以编程方式添加次,起点和终点的范围,以确保我们得到的每个记录从中午12:01开始日期至11:59 PM的结束日期)
选项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
我正在找回与p.PurchDT等于记录2010-10-28十六时33分十三秒,2010-11- 11 10:37:30,还有其他几个人。好消息是它将所有记录中的日期与查询中指示的日期之间的日期相提并论;坏消息是它是随机的(从我所知道的情况来看)也拉动了其他不符合标准的记录。
任何人都可以指向正确的方向吗?我可以发誓这个代码几个星期前工作,但现在不是,即使它没有任何改变。
专业提示:“BETWEEN”在日期范围内效果不佳,因为范围的末尾是包含性的。 `AND col> = startdate AND col
2014-02-01 01:31:16