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

前端之家收集整理的这篇文章主要介绍了如何从tsql(sql 2005)中的utc datetime计算本地datetime?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想在tsql中循环一段时间,并打印utc datetimes和我们的本地变体.
我们住在UTC 1,所以我可以轻松添加1小时,但在夏季,我们住在UTC 2.

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

直到现在我有这个:

  1. declare @counter int
  2. declare @localdate datetime
  3. declare @utcdate datetime
  4. set @counter = 0
  5. while @counter < 100
  6. begin
  7. set @counter = @counter + 1
  8. print 'The counter is ' + cast(@counter as char)
  9. set @utcdate = DATEADD(day,@counter,GETUTCDATE())
  10. --set @localdate = ????
  11.  
  12. print @localdate
  13. print @utcdate
  14. end

解决方法

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

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

创建一个sql函数

  1. [sqlFunction()]
  2. public static sqlDateTime ConvertUtcToLocal(sqlDateTime utcDate)
  3. {
  4. // over to you to convert sqlDateTime to DateTime,specify Kind
  5. // as UTC,convert to local time,and convert back to sqlDateTime
  6. }

你以上的样本就会变成

  1. set @localdate = dbo.ConvertUtcToLocal(@utcdate)

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

猜你在找的MsSQL相关文章