荫生成我的团队了一份报告,要求我根据今天的日期选择在SQL Server行(IST区)的过程从不同的时区确定的日期时间过滤器 - SQL
本报告是严格基于我的工作时间(06:00 IST到22:00 IST)。
服务器位于美国及其CST区域。
例如,今天的日期是04/04/2013。当我开始在06.00 IST工作时,它相当于(2013年3月4日19:30 CST),当我完成我的工作时(2013年4月4日11.30 CST)。
所以我在这里需要的是一个过滤器,这将允许我根据上述条件过滤记录。
注意:我尝试了下面的查询,但是当两个时区在相同的日期时都不符合我的预期。
DECLARE @date DATETIME,@startdate DATETIME,@starthour DATETIME
DECLARE @enddate DATETIME,@endhour DATETIME,@newdate DATETIME
SET @date = DATEADD(DAY, DATEDIFF(DAY, 0, getdate()-1), 0)
SET @starthour = DATEADD(HOUR,19,@date)
set @startdate= DATEADD(MINUTE,30,@starthour)
Set @newdate= DATEADD(DD,1,@date)
SET @endhour = DATEADD(HOUR,11,@newdate)
set @enddate= DATEADD(MINUTE,30,@endhour)
select @startdate, @enddate
select * from dbo.MyTable where TIMESTAMP Between @startdate and @enddate
由于本报告必须在一个小时的基础上产生的,我需要让我的日期时间的计算正确,即使日期是同步的一些帮助。
你可以显示一些示例数据以及应该包含哪些行?尝试在UTC和一个时区之间的时区之间转换数据已经足够困难,不必介意在UTC的另一侧添加另一个时区,并且在UTC的另一侧增加一个半小时的时间。 – 2013-04-04 02:30:59
另外考虑到一年中部分时间你的CST数据实际上将在CDT中,所以它将有一个小时不同。您的时区是否遵守与美国中部时间相同的DST规则?这可能会降低一些复杂性,如果你知道你的工作日总是x小时+ y分钟不同,不管DST为何 – 2013-04-04 02:32:17
为什么你会不接受来自唯一一个在三年后对你的问题提出任何意见的人的唯一答案?我不关心这些观点,我真的很好奇你是如何决定解决你当时的问题的,但三年后,突然间没有......如果你的要求发生了变化,那可能是一个新问题;如果在我的解决方案中发现了一些错误或其他问题,评论是一个好的开始。 – 2016-02-02 12:54:14