我有一个自定义 aspx 应用程序,它直接查询 CRM 数据库基表(例如 ActivityPointer)以获取诸如截止日期、创建日期等数据。自定义 aspx 页面需要根据特定日期范围过滤数据,例如今天,最后 7天等。它通过执行存储在 CRM 数据库中的自定义存储过程来实现。但是,我面临着用户时区问题获取正确数据的挑战。
DECLARE @StartDate DATETIME;
DECLARE @EndDate DATETIME;
DECLARE @NoOfDay INT= 7 -- passed as param
SET @StartDate = DATEADD(day, DATEDIFF(day, @NoOfDays-1, GETDATE()), 0)
SET @EndDate = DATEADD(day, DATEDIFF(day, - 1, GETDATE()), 0)
这将始终根据运行 sql 实例的机器时区返回 startdate 和 enddate。设置开始日期/结束日期的正确方法是什么,以便它还考虑用户时区设置?我认为我不能使用 CRM 特定功能,例如 dbo.fn_UTCToLocalTime() 等,因为我的自定义 aspx 将使用不同的帐户来访问/执行存储过程。