[英]mysql select query with dates not returning correct records
我有一個查詢,該查詢應該使用聯接從多個表中提取記錄,並根據日期范圍過濾所有記錄。 它似乎在拉隨機記錄組-它不會返回聯接中的所有記錄,我想如果它完全忽略了日期,但是它確實拉出的記錄與日期條件不匹配。
這是查詢; 我用兩種不同的方法嘗試了相同的結果。
選項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 AM到結束日期的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 16:33,2010-11-11 10:37:30,以及其他幾個記錄。 好消息是它正在拉入所有記錄,且日期在查詢中指示的日期之間; 壞消息是它是隨機的(據我所知)還引入了其他不符合條件的記錄。
誰能指出我正確的方向? 我本可以在幾周前就宣誓該代碼可以正常工作,但即使現在沒有任何更改,現在也沒有。
那可能是因為您需要():
where (v.TypeFlag='S' or v.TypeFlag is null)
日期不正確的結果都將帶有TypeFlags ='S',對嗎?
此外,如果您使用介於兩者之間的日期,則應使用您想要的最后一個日期旁邊的日期,否則,最后一天將僅包含PurchDT = 2010-12-09 00:00:00
記錄以及該PurchDT = 2010-12-09 00:00:00
所有內容一天將被忽略-我猜。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.