Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.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
在oracle sql中处理工作日日期的条件时的情况_Sql_Oracle_Date_View - Fatal编程技术网

在oracle sql中处理工作日日期的条件时的情况

在oracle sql中处理工作日日期的条件时的情况,sql,oracle,date,view,Sql,Oracle,Date,View,我有oracle视图,我想在其中创建列SYSTEM\u INSERTED\u DATE,该列在表TUA\u PTI中不存在 在该SYSTEM\u INSERTED\u DATE列中,应设置该值,例如,如果当前日期是从星期二到星期五,则应显示上一日期,如果日期是星期一,则应显示从星期五开始的日期。可能吗 下面是视图中的DDL: Create View TES_RUS ( CLASS, TE_RPI ) AS Select CLASS, TE_RPI FROM

我有oracle
视图
,我想在其中创建列
SYSTEM\u INSERTED\u DATE
,该列在表
TUA\u PTI
中不存在

在该
SYSTEM\u INSERTED\u DATE
列中,应设置该值,例如,如果当前日期是从星期二到星期五,则应显示上一日期,如果日期是星期一,则应显示从星期五开始的日期。可能吗

下面是
视图中的DDL

Create View TES_RUS
(
        CLASS,
        TE_RPI
)
AS
Select 
 CLASS,
 TE_RPI
FROM TUA_PTI

假设您的输入是一个日期(anydate),您必须根据该输入计算“上一个工作日”,其中“工作周”定义为周一到周五。还有其他的假设和要求:输入日期是一个工作日,它可能有一天中不同于午夜的时间;输出日期必须有一天的午夜时间,我们不需要考虑“假日”(下班的时候,比如独立日)。

您可以这样做:

select trunc(input_date) - case when to_char(input_date, 'Dy') = 'Mon'
                           then 3 else 1 end
from   ...
这假设您的会话日期语言为英语(或美国或类似语言);如果不是,或者将来可能不是,或者对于其他用户,可以使用第三个参数
to_char

to_char(input_date, 'Dy', 'nls_date_language=English')

视图只是一个SQL,在TUA_PTI中插入/更新数据时,它将无法捕获。如果无法修改表TUA_PTI,您可能必须编写触发器并在其他表中捕获该信息。1。使用Oracle SQL日期函数可以相对轻松地完成您所询问的内容。2.但是,日期将取决于运行查询的时间。这看起来不像是一个真正的插入日期。“插入日期”应该是存储在表中的固定日期,而不是视图中的计算日期(取决于运行查询的日期)。3.如果是星期六或星期天,您如何处理输入日期(无论是
sysdate
还是其他日期)?您如何处理“今天是星期五,昨天是星期四,但今天是假日,因此插入的日期必须是前一个星期三”?例如,现在我添加了新列“系统插入的日期”在select子句中提到SYSDATE-1,然后它正确地给出了从昨天开始的日期,默认为现在…但是我们在这里不使用oracle日期函数来识别当前日期吗?从这里我们可以说,例如,如果是星期一,那么应该显示从上周五开始的日期?例如,现在我添加了新的列“系统插入日期”在select子句中提到SYSDATE-1,那么它正确地给出了从昨天开始的日期,默认为现在…但是我们在这里不使用oracle日期函数来识别当前日期吗?从这里我们可以说,例如,如果是星期一,那么应该显示从上周五开始的日期?