gpt4 book ai didi

oracle - 如何在oracle中选择两个日期之间或按单个年/月/日的结果? (to_date, extract, sysdate)

转载 作者:行者123 更新时间:2023-12-02 00:42:34 24 4
gpt4 key购买 nike

我有一个订单表,它有 2 列 DATE 类型:delivery_date 和 order_date。在我的 sqldeveloper 中,我通过 Java 或手动插入的所有日期都是今年 1 月 25 日的格式 10.01.25。当我尝试查看一个日期和另一个日期之间之间的订单的总价时,我强制采用如下格式:

create or replace function calc_Outlays (init_date IN DATE,final_date IN date)return number is

v_total_enc FORNECIMENTO.TOTAL_ENC_FORNEC%TYPE;

begin
select f.total_enc_fornec into v_total_enc from fornecimento f where f.data_entrega between init_date and final_date;
return v_total_enc;

Exception
When no_data_found then
Insert Into errors Values (0,'No supplyment costs found for dates between '||to_char(init_date)||' and '||to_char(final_date),systimestamp);
return -1;
end;

但我得到 -1 返回。我什至尝试这样查询:select f.total_enc_fornec from fornecimento f where f.data_entrega = '10.01.24';
像这样:select f.total_enc_fornec from fornecimento f where f.data_entrega = to_date('10.01.24','yy-mm-dd');
像这样:select f.total_enc_fornec from fornecimento f where f.data_entrega < to_date('10.01.24');没有任何返回!但如果我执行:select f.total_enc_fornec from fornecimento f where f.data_entrega <= sysdate;它按预期打印结果...

我该怎么做?我显然没有正确传递参数,也没有在函数中传递,也没有执行查询本身

顺便说一句,如果我想选择某年/月/日的所有订单?比方说,使用 extract 函数。你能告诉我怎么做吗?我试过了,但我遇到了同样的问题,而且我的概念很简单,至少,哈哈。

最佳答案

Oracle DATE 类型将日期+时间存储到最接近的秒数 - 所以如果您说 f.data_entrega = '10.01.24' 它不会匹配 f. data_entrega 是 10.01.24 早上 6 点。类似地,SYSDATE 返回当前时间和今天的日期。

如果您希望您的函数只匹配日期部分(即忽略任何时间值),您可能需要更改函数:

select f.total_enc_fornec into v_total_enc
from fornecimento f
where f.data_entrega between TRUNC(init_date) and TRUNC(final_date) + 0.99999;

关于oracle - 如何在oracle中选择两个日期之间或按单个年/月/日的结果? (to_date, extract, sysdate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2130973/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com