【发布时间】:2021-01-26 14:09:31
【问题描述】:
我有 oracle View,我想在其中创建列 SYSTEM_INSERTED_DATE,该列在表 TUA_PTI 中不存在。
在此SYSTEM_INSERTED_DATE 列中,应设置值,例如,如果当前日期是从星期二到星期五,则应显示前一个日期,如果当天是星期一,则应显示星期五的日期。有可能吗?
以下是来自view 的 DDL:
Create View TES_RUS
(
CLASS,
TE_RPI
)
AS
Select
CLASS,
TE_RPI
FROM TUA_PTI
【问题讨论】:
-
View 只是一个 SQL,它无法在 TUA_PTI 中插入/更新数据时捕获,如果不是,您可能必须编写触发器并在不同的表中捕获该信息能够修改表 TUA_PTI。
-
1.使用 Oracle SQL 日期函数可以相对轻松地完成您询问的内容。 2. 但是,日期取决于您运行查询的时间。这看起来不像是真正的插入日期。 “插入的日期”应该是一个固定的日期,存储在表中,而不是计算 - 取决于运行查询的日期 - 在视图中。 3. 如果是周六或周日,你如何处理输入日期(
sysdate或其他)?如何处理“今天是星期五,昨天是星期四但它是假期,所以inserted_date必须是前一个星期三”? -
例如,现在我添加了新列“SYSTEM_INSERTED_DATE”,并在 select 子句中提及为 SYSDATE-1,然后它现在默认正确地给出昨天的日期......但我们在这里不使用 oracle 日期函数识别当前日期,从这个我们可以说例如如果它是星期一,那么应该显示上星期五的日期?