我有一個查詢應該使用連接從多個表中拉出記錄,並根據日期範圍對它們進行過濾。它似乎是隨機抽取一組記錄 - 它不會返回連接中的所有記錄,我想如果它完全忽略了日期,但它所做的記錄與日期標準不匹配。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