如何从tsql(SQL 2005)中的UTC日期时间计算本地日期时间?
技术问答
326 人阅读
|
0 人回复
|
2023-09-14
|
我想在tsql中循环一段时间,并打印utc日期时间和我们的本地变量。我们住在UTC +1,所以我可以轻松地增加1个小时,但是在夏天,我们住在UTC +2。5 ^7 O0 u7 u, p1 B9 `
在C#中,我可以创建一个日期时间,并使用一种方法来询问UTC变体,反之亦然。& t$ w. m, |( r7 w% X
直到现在我有这个:
$ h4 F3 o4 u* h% T3 zdeclare @counter int
% o% z) p7 I& W' mdeclare @localdate datetime
& Q2 x1 G- ]1 v: Q1 Adeclare @utcdate datetime
! A& B5 {: R1 q2 C: d7 H9 q set @counter = 0
! H0 d4 v" W* b& u5 I. B while @counter 假设您使用的是SQL 2005以上版本,则可以开发一个SQL CLR函数以采用UTC日期并将其转换为本地日期。9 m& E* z' ? i7 i5 m. k
此链接是MSDN的“操作方法”,它说明了如何在C#中创建标量UDF。
0 Y! k1 P/ I1 d V按照以下方式创建一个SQL函数0 @' [8 m$ l7 N# K
[SqlFunction()]
. g1 } r' b# Y/ d; D) lpublic static SqlDateTime ConvertUtcToLocal(SqlDateTime utcDate) 2 {/ p( m# B& E {+ l' Q0 \' F( C
{
' i J6 ?4 r, S2 c% o // over to you to convert SqlDateTime to DateTime, specify Kind# D2 P3 L3 [" T6 ]/ T
// as UTC, convert to local time, and convert back to SqlDateTime
; |3 Z5 R$ y9 q2 D. f6 L}
# g: p8 o) p/ \. \您上面的示例将变为
) p" u9 q" Z6 D$ {; @8 O( |set @localdate = dbo.ConvertUtcToLocal(@utcdate)$ |# m G; X6 I0 f5 k7 q% y5 i
SQL CLR在部署方面有开销,但是我觉得这样的情况最适合。 |
|
|
|
|
|