创建 365 天的视图

     2023-02-21     188

关键词:

【中文标题】创建 365 天的视图【英文标题】:Create View with 365 days 【发布时间】:2012-01-21 19:24:40 【问题描述】:

如何创建一个包含一年中所有日期的Viewview 应填写从 1 月 1 日到 12 月 31 日的日期。我如何在 Oracle 中做到这一点?

如果当年有 365 天,view 应该有 365 行日期。如果当年有 366 天,view 应该有 366 行日期。我希望view 有一个DATE 类型的列。

【问题讨论】:

您想要一个 365 行的视图吗?还是特定年份的每一天的视图?由于闰年,有些年份有 366 天。您是否希望视图具有DATE 类型的单列,在这种情况下,我们需要知道您希望这些行来自哪个特定年份以及您是否希望更改它以便视图始终返回数据例如,今年。还是要返回一天的字符串表示形式? 如果当年有 365 天,view 有 365 行日期。如果当年有 366 天,view 有 366 行日期。我希望视图具有DATE 类型的单列 【参考方案1】:

这个简单的视图就可以了:

create or replace view year_days as
select trunc(sysdate, 'YYYY') + (level-1) as the_day
from dual
connect by level <= to_number(to_char(last_day(add_months(trunc(sysdate, 'YYYY'),11)), 'DDD'))
/

像这样:

SQL> select * from year_days;

THE_DAY
---------
01-JAN-11
02-JAN-11
03-JAN-11
04-JAN-11
05-JAN-11
06-JAN-11
07-JAN-11
08-JAN-11
09-JAN-11
10-JAN-11
11-JAN-11

...

20-DEC-11
21-DEC-11
22-DEC-11
23-DEC-11
24-DEC-11
25-DEC-11
26-DEC-11
27-DEC-11
28-DEC-11
29-DEC-11
30-DEC-11
31-DEC-11

365 rows selected.

SQL> 

日期是通过应用几个 Oracle 日期函数生成的:

trunc(sysdate, 'yyyy') 为我们提供了当年的一月一日 add_months(x, 11) 告诉我们 12 月 1 日 last_day(x) 告诉我们 12 月 31 日 to_char(x, 'DDD') 给了我们 12 月 31 日的号码,今年是 365,明年是 366。 最后一个图提供了行生成器CONNECT BY LEVEL &lt;= X 的上限

【讨论】:

【参考方案2】:

你可以使用流水线表格,它应该是这样的:

create or replace type year_date_typ as object (v_day date);
create or replace type year_date_tab as table of year_date_typ;

CREATE OR REPLACE FUNCTION get_dates(year IN VARCHAR2) RETURN year_date_tab PIPELINED IS
v_start_date date := to_date('0101' || year, 'ddmmyyyy');
res year_date_typ := year_date_typ(null);
v_days_in_year integer := 365;
BEGIN
if to_char(last_day(to_date('0102'||year, 'ddmmyyyy')), 'dd') = '29' then
v_days_in_year := 366;
end if;
FOR i in 0 .. v_days_in_year integer-1 LOOP
res.v_day := v_start_date + i;
pipe row(res);
END LOOP;

return;
END get_dates;

你可以使用它:

select * from table(get_dates('2011'));

【讨论】:

收到此错误 PLS-00653:PL/SQL 范围内不允许聚合/表函数 好吧,我的代码可能并不完美(我无法检查),但我仍然认为使用管道函数的方法更好,因为它可以让您将年份作为参数【参考方案3】:

这在 MS SQL 中运行良好

SELECT TOP (DATEDIFF(day,  DATEADD(yy, DATEDIFF(yy,0,getdate()), 0), DATEADD(yy, DATEDIFF(yy,0,getdate()) + 1, -1))) n = ROW_NUMBER() OVER (ORDER BY [object_id]), 
dateadd(day, ROW_NUMBER() OVER (ORDER BY [object_id]) - 1, DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)) AS AsOfDate FROM   sys.all_objects 

【讨论】:

创建按查找过滤的 D365 视图

】创建按查找过滤的D365视图【英文标题】:CreatingaD365viewfilteredbylookup【发布时间】:2022-01-1519:42:18【问题描述】:是否可以在Dynamics365中创建一个视图,根据单独的帐户ID列表(查找)过滤记录?【问题讨论】:【参考方案1】:... 查看详情

sharepointonline创建和使用视图

  前言  本文介绍如何在Office365中创建和使用视图。  正文  首先,解释一下什么是SharePoint站点视图,所谓视图,就是列表的一个呈现形式,包含特定的栏、排序、筛选、分组等特性,我们通常创建视图用来展示特定... 查看详情

如何根据 Oracle 中用户的输入创建动态视图?

】如何根据Oracle中用户的输入创建动态视图?【英文标题】:HowtocreateadynamicviewbasedontheinputfromauserinOracle?【发布时间】:2020-09-0312:27:03【问题描述】:例如,我必须为特定员工创建一个视图,该视图存储过去50天的出勤信息,而... 查看详情

sharepointonline/365-从列表视图中删除多个附加列和显示条目的“查看条目”(代码片段)

...可怕的“查看条目”链接。我尝试过的解决方案-我试图创建一个不附加的镜像列,只是复制信息。我创建了一个流程,它从多行附加信息并将其复制到镜像列中。但是,这不起作用,因为更新将在流程启动之前附加到多行列,... 查看详情

dynamics365onlineapplicationuser创建方式变更

...;本文以世纪互联为例来介绍下,新的ApplicationUser怎么创建  在做这步操作前默认你的应用程序已经在AAD中创建好了,打开PowerPlatform管理中心࿰ 查看详情

Office 365 受保护的视图破坏 Excel 宏

】Office365受保护的视图破坏Excel宏【英文标题】:Office365ProtectedViewBreakingExcelMarcos【发布时间】:2018-11-1800:44:17【问题描述】:我们的客户端已更新至MicrosoftOffice365(版本1708),当通过电子邮件接收包含vb宏的生成Excel文件(xlt)时... 查看详情

d365fo视图computed字段(代码片段)

...增加日期时间字段,可以通过Computed字段来组合,视图里创建一个新的方法实体表如下所示,只有日期和时间字段。在View里增加一个运行在服务器端的静态私有方法privateserverstaticstrtransDateTime()returnSysComputedColumn::getDateAdd(SysComputed... 查看详情

创建一个依赖于当前时间的 mongo 视图

】创建一个依赖于当前时间的mongo视图【英文标题】:Creatingamongoviewthatdependsonthecurrenttime【发布时间】:2018-07-1512:30:49【问题描述】:我有一个包含日期字段的集合,我想创建一个按当前日期过滤所有文档的mongo视图。例如,我... 查看详情

office365的开发者训练营,免费,在微软广州举办

...的平台。作为一名开发人员,您可以使用每天使用的工具创建智能、连接的产品和解决方案。Office365开发者训练营是一个免费的,为期一天的培训活动,由微软MVP领导,并得到微软的支持。我 查看详情

过去 30 天为 MYSQL 创建视图

】过去30天为MYSQL创建视图【英文标题】:CREATEVIEWforMYSQLforlast30days【发布时间】:2010-06-0418:41:02【问题描述】:我知道我写的查询是错误的,当我们获得大量流量时,我们的数据库会被击中HARD并且页面会变慢...我想我需要根据CUR... 查看详情

在 SQL 中自动添加每一天的日期

...09-0108:32:54【问题描述】:我正在使用BigQuery并使用多个表创建了一个视图。每天的数据都需要与多个平台同步。我需要通过SQL插入日期或其他字段,通过这些字段我可以确定每天将哪些行添加到视图中或更新了哪些行,以便我每... 查看详情

d365fo视图computed字段(代码片段)

从AX2012开始,AX的View增加了Computed类型的字段,具体的操作步骤,参见下文。https://docs.microsoft.com/en-us/dynamicsax-2012/developer/walkthrough-add-a-computed-column-to-a-view#add-a-static-method-to-the-viewComputed列的原理是通过SQL函 查看详情

如何获取使用office365grouptemplate创建的sharepointonlinesite

在维护企业Office365期间,有收到userrequest,如何获取使用Office365grouptemplate创建的SharePointOnlinesite。我们都知道正常情况下,可以按上面说的创建Office365grouptemplate的SharePointonlinesite,也可以直接创建SharePointonlines 查看详情

如何获取使用office365grouptemplate创建的sharepointonlinesite

在维护企业Office365期间,有收到userrequest,如何获取使用Office365grouptemplate创建的SharePointOnlinesite。我们都知道正常情况下,可以按上面说的创建Office365grouptemplate的SharePointonlinesite,也可以直接创建SharePointonlines 查看详情

office365批量创建用户以及消除用户信息乱码的方法

office365创建用户的方法主要分为三种,第一种是通过office365管理员界面创建,第二种是使用powershell工具创建,第三种是从本地AD中把用户信息同步到云端。本文介绍第一种方法——通过office365云端的管理员界面创建用户。一个一... 查看详情

怎样创建一个dynamics365crmonlineplugin

GoldenRules1.PlatformonlypassesEntityattributestoPluginthathaschangeofdata.2.Iftheuserdoesnotenteranyvalueintoattribute,theattributeisnotavaibleinAttributeCollectionofEntity.3.Alwayscheckifattributeis 查看详情

如何在 SQL Server 2005 中创建和维护最近 7 天的分区视图和存档记录?

】如何在SQLServer2005中创建和维护最近7天的分区视图和存档记录?【英文标题】:Howtocreateandmaintainapartitionedviewwithlast7daysandarchiverecordsinSQLServer2005?【发布时间】:2012-03-2609:44:37【问题描述】:我有一个相当大的表,我需要查询它... 查看详情

Office 365:创建规则以转发发送到通讯组的电子邮件

】Office365:创建规则以转发发送到通讯组的电子邮件【英文标题】:Office365:CreateRulestoforwardemailssenttoDistributionGroup【发布时间】:2019-06-0900:41:30【问题描述】:我们正在使用Office365,我需要一些帮助来创建将发送到通讯组的电子... 查看详情