【发布时间】:2021-12-18 21:30:19
【问题描述】:
我需要创建一个日历,在一行中显示一个月中的所有日期。 然后我需要显示同一个月的另一行,但使用当天的第一个字母(M 表示周一 - S 表示周日等),如果是假日日期,则添加一个字母(C 表示民用,R 表示宗教) .
输出示例:
Date Day
gennaio 2022, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31
gennaio 2022, Sr, D, L, M, M, Gr, V, S, D, L, M, M, G, V, S, D, L, M, M, G, V, S, D, L, M, M, G, V, S, D, L
febbraio 2022, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, <null>, <null>, <null>
febbraio 2022, M, M, G, V, S, D, L, M, M, G, V, S, D, L, M, M, G, V, S, D, L, M, M, G, V, S, D, L, <null>, <null>, <null>
我使用包含所有假期日期的表格并从中进行选择以返回那天是否是假期。
我想知道是否有可能以及如何创建一个函数,如果日期是假期则返回而不需要额外的表(我从 2021 年 1 月 1 日到 2025 年 1 月 12 日创建,意思是更早或更晚都会出错)
我是意大利人,由于除复活节外所有假期都是固定的,我想该函数只需要计算复活节日期,我可以插入所有其他假期。
它的想法是通过函数从日期间隔(在我的情况下是从 1-01-2021 到 31-12-2025)中进行选择,然后将其格式化为具有如上所示的 2 列和所有日期和假期。
提前谢谢大家。
【问题讨论】:
-
函数应该如何知道某天是否是假期?您必须将它们存储在某个地方:在表格中或在代码中硬编码。为清楚起见,最好将所有内容存储在一个地方(在您的情况下是在一个表格中),因为当某些内容存储在表格中并且在代码中计算一个假期时,它可能会令人困惑。
-
@astentx 是的,我也是这么想的。在我的第一次尝试中,我确实逐年创建了一个包含所有假期的表格。当您学习如何计算复活节时,其他所有日子都保持不变。问题是我的老师不希望我这样做,因为它应该是可以在单个查询中完成的事情 + 一个支持它的函数。一旦完成,你就再也不要碰它了。使用表格,我需要添加不存在的年份。
标签: sql oracle function plsql calendar