簡體   English   中英

MySQL選擇查詢日期不返回正確的記錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM