Sql 将时间框架分为几个月

Sql 将时间框架分为几个月,sql,qlikview,Sql,Qlikview,我有两个时间戳,分别代表我开始项目工作的时间和我完成项目工作的时间。时间戳跨越两个月。我想把它们分开,这样我就可以(以图表的形式)显示我在第一个月花了多少时间,在第二个月花了多少时间。例如,如果我在3月31日0:00:00开始一个项目,并在4月2日0:00:00结束它,我想显示50%的工作发生在3月,50%发生在4月。这可能吗 作为一个附加组件,如果项目跨度超过2个月,我可以这样做吗?三四个怎么样?还是13岁 操作会影响不到一个月的时间段吗?intervalmatch脚本函数就是您要寻找的。与主

我有两个时间戳,分别代表我开始项目工作的时间和我完成项目工作的时间。时间戳跨越两个月。我想把它们分开,这样我就可以(以图表的形式)显示我在第一个月花了多少时间,在第二个月花了多少时间。例如,如果我在3月31日0:00:00开始一个项目,并在4月2日0:00:00结束它,我想显示50%的工作发生在3月,50%发生在4月。这可能吗

作为一个附加组件,如果项目跨度超过2个月,我可以这样做吗?三四个怎么样?还是13岁


操作会影响不到一个月的时间段吗?

intervalmatch脚本函数就是您要寻找的。与主日历相结合,允许您计算日期,这将使您能够制作所需的表格。我只是在这里自动生成一个,您可以使用任何方法来创建它

Intervals:
LOAD ID, 
 StartDate, 
 EndDate
FROM
[Q:\Stack Exchange\Calls.xlsx]
(ooxml, embedded labels, table is Sheet2);

let zDateMin=42000;
let zDateMax=42100;

DATES:
LOAD
    Date($(zDateMin) + IterNo() - 1) as [DATE],
    year( Date($(zDateMin) + IterNo() - 1)) as YEAR,
    month( Date($(zDateMin) + IterNo() - 1)) as MONTH
AUTOGENERATE 1
WHILE $(zDateMin)+IterNo()-1<= $(zDateMax);

INTERVAL:   
IntervalMatch (DATE) load StartDate, EndDate resident Intervals;

left join (DATES) load * resident INTERVAL; drop table INTERVAL;
间隔:
加载ID,
开始日期,
结束日期
从…起
[Q:\Stack Exchange\Calls.xlsx]
(ooxml,嵌入式标签,表为Sheet2);
设zDateMin=42000;
设zDateMax=42100;
日期:
负载
日期($(zDateMin)+IterNo()-1)为[日期],
年份(日期($(zDateMin)+IterNo()-1))作为年份,
月份(日期($(zDateMin)+IterNo()-1))作为月份
自动生成1

而$(zDateMin)+IterNo()-1您使用的是什么数据库(SQL Server、Oracle、MySql等)?它是SQL Server数据库。