Reporting services SSRS转换毫秒时间及过滤报告

Reporting services SSRS转换毫秒时间及过滤报告,reporting-services,time,filter,milliseconds,Reporting Services,Time,Filter,Milliseconds,第一次提问者对任何含糊不清或违反规则表示歉意 我们使用ServiceDesk应用程序,它可以生成各种预配置的报告,并显示它们背后的SQL查询。 然后,我获取这些报告并从SQLServer报告服务器创建一个墙板,以提供一些实时管理信息 应用程序使用时间戳记录工作日志,该时间戳似乎引用自1970年1月1日以来的毫秒数。例如,我可以从应用程序生成SQL查询以筛选本月的数据,并将时间戳放入我的报告中,如下面的报告 SELECT ad.ORG_NAME "Account",wo.WORKORDERID "

第一次提问者对任何含糊不清或违反规则表示歉意

我们使用ServiceDesk应用程序,它可以生成各种预配置的报告,并显示它们背后的SQL查询。 然后,我获取这些报告并从SQLServer报告服务器创建一个墙板,以提供一些实时管理信息

应用程序使用时间戳记录工作日志,该时间戳似乎引用自1970年1月1日以来的毫秒数。例如,我可以从应用程序生成SQL查询以筛选本月的数据,并将时间戳放入我的报告中,如下面的报告

SELECT ad.ORG_NAME "Account",wo.WORKORDERID "Request ID",ct.DESCRIPTION
 "Time Spent Description",ct.TIMESPENT "Time Spent",wtd.NAME "Worklog    
Type",ct.TS_STARTTIME "Time Spent Starttime",rctd.FIRST_NAME "Time Spent 
Technician",cd.CATEGORYNAME "Category",qd.QUEUENAME "Group",lvd.LEVELNAME 
"Level" 
FROM WorkOrder wo LEFT JOIN WorkOrderToCharge wotoc ON   
wo.WORKORDERID=wotoc.WORKORDERID 
LEFT JOIN ChargesTable ct ON  wotoc.CHARGEID=ct.CHARGEID 
LEFT JOIN SDUser rcti ON  ct.TECHNICIANID=rcti.USERID 
LEFT JOIN AaaUser rctd ON rcti.USERID=rctd.USER_ID 
LEFT JOIN WorkLogTypeDefinition wtd ON ct.WORKLOGTYPEID=wtd.WORKLOGTYPEID 
LEFT JOIN WorkOrder_Queue woq ON wo.WORKORDERID=woq.WORKORDERID 
LEFT JOIN QueueDefinition qd ON Woq.QUEUEID=qd.QUEUEID 
LEFT JOIN WorkOrderStates wos ON wo.WORKORDERID=wos.WORKORDERID 
LEFT JOIN CategoryDefinition cd ON wos.CATEGORYID=cd.CATEGORYID 
LEFT JOIN LevelDefinition lvd ON   wos.LEVELID=lvd.LEVELID 
INNER JOIN AccountSiteMapping asm ON  wo.siteid=asm.siteid INNER JOIN 
AccountDefinition ad ON asm.accountid=ad.org_id 
WHERE  (((ct.TS_STARTTIME >= 1441062000000) AND 
((ct.TS_STARTTIME != 0) AND (ct.TS_STARTTIME IS NOT NULL))) AND 
((ct.TS_STARTTIME <= 1443653999000) AND (((ct.TS_STARTTIME != 0) AND 
(ct.TS_STARTTIME IS NOT NULL)) AND (ct.TS_STARTTIME != -1))))  AND 
wo.ISPARENT='1'
问题是,在每月的第一天,我必须返回servicedesk应用程序-再次运行报告以更新tiem值以反映当前月份-然后将其生成的查询转移到SSRS查询。我希望能够删除此查询的ct.ts.starttime元素,而是在SSRS数据集中使用一个过滤器,以仅显示ct.ts.startime在当前月份内的结果

恐怕我没有什么SQL技能,所以如果有人能给我指出正确的方向,我将不胜感激

谢谢


BFG

您只需更改WHERE子句,使用starttime将其限制在当前月份内


我看到的唯一问题是,您没有说,也可能不知道正在使用什么版本的SQL SQL SQL Server、Oracle SQL、MySQL。。。。不幸的是,其中大多数使用不同的函数来获取当前日期。我使用了SQL Server的GETDATE函数。

为什么不将上次运行日期/时间存储在控制数据库中?然后,您的代码将具有where ct.Ts_STARTTIME>=从ControlTable中选择LastRuntime。在SQL开始时,获取当前日期时间并存储在变量中。完成这个过程。最后,用存储的变量加上毫秒miguelh更新控制记录-感谢您花时间回复。我使用SSRS报告在墙板上生成一些图形,我已将其配置为每隔30分钟左右自动刷新一次。目标是让该报告始终显示当前月份内具有ct.ts_开始时间的数据,而无需每月手动更改任何有关报告配置的信息。无需担心@BFGRicey。报告是通过存储过程填充的,还是可以配置为使用sp?如果是这样,我建议的编码可以应用于sp中。
WHERE DATEADD(s, ct.TS_STARTTIME / 1000, '1970-01-01') BETWEEN CAST(DATEADD(D, 1 - DATEPART(d, GETDATE()), GETDATE()) AS DATE) AND CAST(DATEADD(m, 1, DATEADD(D, 1 - DATEPART(d, GETDATE()), GETDATE())) AS DATE)
AND ct.TS_STARTTIME IS NOT NULL AND wo.ISPARENT='1'