gpt4 book ai didi

sql - Oracle - 日期时间条件

转载 作者:搜寻专家 更新时间:2023-10-30 22:06:11 25 4
gpt4 key购买 nike

我正在处理这个包含工厂车间订单信息的数据库。我正在使用这个检索订单数据的查询,使用截止日期作为条件。它提取在两周的时间范围内关闭的订单。

select order.id, order.end_date, material.id, material.description
from plant.order inner join plant.material
on order.material = material.id
where order.end_date <= to_date('26/10/2018 06:00:00', 'DD/MM/YYYY HH24:MI:SS')
where order.end_date <= to_date('12/10/2018 06:00:00', 'DD/MM/YYYY HH24:MI:SS')

由于工作日是轮类制的(比如10月26日工作日从26/10 6:00开始到27/10 6:00结束24小时),我需要管理这个东西。

是否可以使用一个条件来检查小时是否 < 6,如果条件为真,它会在另一列中写入正确的值?还是有更好的管理方式?

order.id      order.end_date     material.id      material.description 
-------- -------------- ----------- --------------------
1 26/10/2018 05:00 1 Lorem Ipsum
2 26/10/2018 07:00 2 Lorem Ipsum


order.workday (new column)
-------------
25/10/2018
26/10/2018

在这种情况下,订单 ID 1 的结果应为日期 25/10/2018,而订单 ID 2 的结果应为日期 26/10/2018。

我希望我已经说清楚了。

谢谢

最佳答案

您可以简单地使用 TRUNC(order.end_date - 6/24)

WITH t AS (
SELECT TO_DATE('26/10/2018 05:00' , 'dd/mm/yyyy hh24:mi') AS end_date FROM dual
UNION ALL SELECT TO_DATE('26/10/2018 07:00' , 'dd/mm/yyyy hh24:mi') AS end_date FROM dual)
SELECT end_date, TRUNC(end_date - 6/24)
from t;


+----------------------------------------+
|END_DATE |TRUNC(END_DATE-6/24)|
+----------------------------------------+
|26.10.2018 05:00:00|25.10.2018 |
|26.10.2018 07:00:00|26.10.2018 |
+----------------------------------------+

关于sql - Oracle - 日期时间条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53005836/

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