Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql select查询的日期未返回正确的记录_Mysql_Sql - Fatal编程技术网

mysql select查询的日期未返回正确的记录

mysql select查询的日期未返回正确的记录,mysql,sql,Mysql,Sql,我有一个查询,它应该使用连接从多个表中提取记录,并根据日期范围过滤所有记录。它似乎在随机抽取一组记录——它不会返回联接中的所有记录,我想如果它完全忽略日期,它会这样做,但是它抽取的记录与日期标准不匹配 这是一个问题;我试过两种不同的方法,结果都是一样的 备选案文1: SELECT p.PurchActvtyID, p.PurchAmt, p.CcAuthCode, p.PurchDT, v.VoucherNbr, a1.name as billName, a1.company as bil

我有一个查询,它应该使用连接从多个表中提取记录,并根据日期范围过滤所有记录。它似乎在随机抽取一组记录——它不会返回联接中的所有记录,我想如果它完全忽略日期,它会这样做,但是它抽取的记录与日期标准不匹配

这是一个问题;我试过两种不同的方法,结果都是一样的

备选案文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获取每条记录

备选案文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-2816:33:13、2010-11-1110:37:30的记录,以及其他一些记录。好消息是,它正在拉入所有日期在查询中指示的日期之间的记录;坏消息是,这是随机的,我可以告诉你,还有其他不符合标准的记录


谁能给我指出正确的方向吗?我可以在几周前发誓这段代码是有效的,但现在它不是,即使它没有任何更改。

这可能是因为您需要:

 where (v.TypeFlag='S'  or v.TypeFlag is null)
日期不正确的结果都会有TypeFlags='S',对吗


此外,如果使用介于两者之间的日期,则应使用所需的最后一天的下一天,否则,最后一天将只包括PURCHD=2010-12-09 00:00:00的记录,并且从该天开始的所有其他内容都将被忽略-我猜。

我将尝试使用paren。数据库中当前的所有结果都有TypeFlag=S,因此这不是检查错误结果的有效方法。至于日期,否-我们在查询的日期字段中专门添加了时间值,请参见选项1,以确保它从第一个日期的上午12:01到第二个日期的晚上11:59获取所有信息。我想您应该检查一下,谢谢;从现在起,我会把它放在书签上。不知道为什么我以前从未遇到过不使用parens的问题。。。我想我只是幸运而已。在任何情况下,它似乎都解决了这个问题。专业提示:对于日期范围来说,BETWEEN不太有效,因为范围的结尾是包含在内的。col>=startdate和col