如何从tsql(SQL 2005)中的UTC日期时间计算本地日期时间?
技术问答
327 人阅读
|
0 人回复
|
2023-09-14
|
我想在tsql中循环一段时间,并打印utc日期时间和我们的本地变量。我们住在UTC +1,所以我可以轻松地增加1个小时,但是在夏天,我们住在UTC +2。
- v. v/ [6 h; e' d/ ~在C#中,我可以创建一个日期时间,并使用一种方法来询问UTC变体,反之亦然。' ?1 y1 }- `& { v- b
直到现在我有这个:8 p9 l0 J$ z$ c4 }! F2 N0 o
declare @counter int/ z; L3 l; B! K. y# a
declare @localdate datetime& U# P# W: b. j ] `6 B
declare @utcdate datetime/ V( \0 S! z2 ^+ |1 U4 h
set @counter = 0& o- j1 R, f+ |3 u
while @counter 假设您使用的是SQL 2005以上版本,则可以开发一个SQL CLR函数以采用UTC日期并将其转换为本地日期。
2 a- ], ^- X/ ~/ ]/ a此链接是MSDN的“操作方法”,它说明了如何在C#中创建标量UDF。
7 q6 j5 k8 L* Z4 ~( `" i按照以下方式创建一个SQL函数
1 |6 m) ]" U! L% P, Q[SqlFunction()]% I6 ~! p$ v2 h! w- v
public static SqlDateTime ConvertUtcToLocal(SqlDateTime utcDate)
; W' T' Q+ @+ d" P+ _. r w$ J{2 B5 q4 O6 q6 p) D5 r$ f6 J
// over to you to convert SqlDateTime to DateTime, specify Kind" V5 P# ?. g6 y1 M
// as UTC, convert to local time, and convert back to SqlDateTime
0 |- ^2 a7 S8 f; j8 f- {}
- W% u: h _5 L您上面的示例将变为# w- v3 H/ ^' n [7 g
set @localdate = dbo.ConvertUtcToLocal(@utcdate)8 a. Q+ o8 E7 I, _+ O8 M
SQL CLR在部署方面有开销,但是我觉得这样的情况最适合。 |
|
|
|
|
|