加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

如何从tsql(sql 2005)中的utc datetime计算本地datetime?

发布时间:2020-12-12 16:15:05 所属栏目:MsSql教程 来源:网络整理
导读:我想在tsql中循环一段时间,并打印utc datetimes和我们的本地变体. 我们住在UTC 1,所以我可以轻松添加1小时,但在夏季,我们住在UTC 2. 在C#中,我可以创建一个datetime并使用一个方法来请求UTC变体,反之亦然. 直到现在我有这个: declare @counter intdeclare @l
我想在tsql中循环一段时间,并打印utc datetimes和我们的本地变体.
我们住在UTC 1,所以我可以轻松添加1小时,但在夏季,我们住在UTC 2.

在C#中,我可以创建一个datetime并使用一个方法来请求UTC变体,反之亦然.

直到现在我有这个:

declare @counter int
declare @localdate datetime
declare @utcdate datetime
 set @counter = 0
 while @counter < 100
 begin
   set @counter = @counter + 1
   print 'The counter is ' + cast(@counter as char)
  set @utcdate  = DATEADD(day,@counter,GETUTCDATE())
  --set @localdate = ????

  print  @localdate  
  print @utcdate
 end

解决方法

假设您正在使用SQL 2005,您可以开发一个SQL CLR函数来采用UTC日期并转换为本地日期.

This link是MSDN如何解释如何在C#中创建标量UDF.

创建一个SQL函数

[SqlFunction()]
public static SqlDateTime ConvertUtcToLocal(SqlDateTime utcDate) 
{
    // over to you to convert SqlDateTime to DateTime,specify Kind
    // as UTC,convert to local time,and convert back to SqlDateTime
}

你以上的样本就会变成

set @localdate = dbo.ConvertUtcToLocal(@utcdate)

SQL CLR在部署方面有其开销,但我觉得这样的情况是最适合的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读