我试图从数据库中返回一些结果,其中 date_order 列是 1970 年,但查询还返回 2014 年和 2015 年的日期。我尝试了几个查询,但它们都是一样的。
我的 table
accession_id (INT),
date_order(DATE) 默认“0000-00-00”,
date_billed(DATE) 默认“0000-00-00”,
date_paid(DATE) 默认“0000-00-00”
我的查询:
从账单中选择 DISTINCT(accession_id)、date_order、date_billed、date_paid,其中 date(date_order) = '1970-01-01' AND accession_id BETWEEN '206070' AND '296715' OR '402603' AND '411626';
从账单中选择 DISTINCT(accession_id)、date_order、date_billed、date_paid WHERE date_order = '1970-01-01' AND accession_id BETWEEN '206070' AND '296715' OR '402603' AND '411626' ;
从结算中选择 DISTINCT(accession_id)、date_order、date_billed、date_paid,其中 date_order LIKE '%1970%' AND accession_id BETWEEN '206070' AND '296715' OR '402603' AND '411626';
最佳答案
您需要在第一组日期之后指定 BETWEEN,并使用括号。就像这样:
SELECT DISTINCT(accession_id), date_order, date_billed, date_paid FROM billing WHERE date(date_order) = '1970-01-01' AND
(
accession_id BETWEEN '206070' AND '296715'
OR
accession_id BETWEEN '402603' AND '411626'
);
就目前情况而言,这些数字的计算结果为真,并且对它们进行“或”运算,因此您将获得所有结果。
关于mysql - 选择日期提供了错误的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31788501/