Php 获取过去2天的生产数据

Php 获取过去2天的生产数据,php,sql,oracle,Php,Sql,Oracle,我有一个关于获取两天前制造数据的问题。我的代码可以工作,但我认为我的实现效率很低。我有的是这个, // YESTERDAYS FABRICATION $yesterdaySql = "SELECT SUM(CURRENT_WEIGHT) AS TOTALYESTERDAYWEIGHT FROM FABRICATION_HIST WHERE TO_CHAR (FAB_ENTRY_DATE,'MM/DD/YYY

我有一个关于获取两天前制造数据的问题。我的代码可以工作,但我认为我的实现效率很低。我有的是这个,

// YESTERDAYS FABRICATION
            $yesterdaySql = "SELECT SUM(CURRENT_WEIGHT) AS TOTALYESTERDAYWEIGHT FROM FABRICATION_HIST 
                                WHERE TO_CHAR (FAB_ENTRY_DATE,'MM/DD/YYYY') = TO_CHAR(SYSDATE - 1, 'MM/DD/YYYY') 
                                AND PROJECT_NAME = :projName";
            $yesterdayParse = oci_parse($conn, $yesterdaySql);
            oci_bind_by_name($yesterdayParse, ":projName", $_SESSION['cd-dropdown']);            
            oci_define_by_name($yesterdayParse, "TOTALYESTERDAYWEIGHT", $sumWeightYesterday);
            oci_execute($yesterdayParse);

            // TWO DAYS AGO FABRICATION
            $twoDaysSql = "SELECT SUM(CURRENT_WEIGHT) AS TOTALTWODAYSAGOWEIGHT FROM FABRICATION_HIST 
                                WHERE TO_CHAR (FAB_ENTRY_DATE,'MM/DD/YYYY') = TO_CHAR(SYSDATE - 2, 'MM/DD/YYYY') 
                                AND PROJECT_NAME = :projName";
            $twoDaysParse = oci_parse($conn, $twoDaysSql);
            oci_bind_by_name($twoDaysParse, ":projName", $_SESSION['cd-dropdown']);            
            oci_define_by_name($twoDaysParse, "TOTALTWODAYSAGOWEIGHT", $sumWeightTwoDays);
            oci_execute($twoDaysParse);
我知道这是非常低效的。任何人都可以建议我,这样我可以在一次查询中获取两天的查询

提前谢谢

给你

SELECT
    SUM(CASE WHEN TRUNC(FAB_ENTRY_DATE) = TRUNC(SYSDATE) - 1 THEN CURRENT_WEIGHT END) AS TOTALYESTERDAYWEIGHT,
    SUM(CASE WHEN TRUNC(FAB_ENTRY_DATE) = TRUNC(SYSDATE) - 2 THEN CURRENT_WEIGHT END) AS TOTALTWODAYSAGOWEIGHT
FROM FABRICATION_HIST 
WHERE FAB_ENTRY_DATE >= TRUNC(SYSDATE) - 2
    AND FAB_ENTRY_DATE < TRUNC(SYSDATE)
    AND PROJECT_NAME = :projName
;

将PHP中的时间限制作为查询参数传入,然后将
FAB\u ENTRY\u DATE
与之进行比较。你也只需要一个带参数的查询,如果有性能问题,很可能是数据库本身的问题。在我看来,一个查询而不是两个查询在这里不会有多大效果。您最好要求对DB查询本身进行调优。为此,我建议您在这里发布查询的执行计划。谢谢@nop77svk。如果今天或明天是星期一,如何跳过星期天?
create index i_fabrication_hist_something
on t_fabrication_hist (project_name, fab_entry_date)
compress 1
compute statistics
;