将SQL Server DateTime列迁移到DateTimeOffset
技术问答
236 人阅读
|
0 人回复
|
2023-09-14
|
我有一个旧表,其中有几行具有datetime列。我想将其切换为datetimeoffset,但我希望能够传输已经存在的数据。所以我正在做类似的事情:
. U8 C l+ A1 a3 k8 g* ESET IDENTITY_INSERT Table_Temp ON
2 E9 [- M- L5 \* j! PINSERT INTO Table_Temp
9 J* x; Z; M/ T' n (Col0, ... ColN,)
4 ?! {- u) M7 Y* H+ J+ w0 o1 I" j, oSELECT
, j) ]5 d1 {, d& ? l; }/ T8 [ COl0,.... ColN, from
' U4 v' ]' K5 f& L* ^9 N1 L0 ~Table_Original;1 F" K6 h' X* p6 ^, \
SET IDENTITY_INSERT Table_Temp OFF
. C) {% o& V# l1 m$ v q/ k8 W这有效,但当我执行dattime到datetimeoffset分配时,偏移量设置为0。幸运的是,我要将其设置为的偏移量是当前系统的偏移量。我不是tsql专家,但我似乎无法找出一种简单的方法来做到这一点。
& A; Z$ i1 w/ { A* R' s7 v我希望能够在转换中设置偏移量。我打算求助于使用ac#实用程序(或PowerShell),但我宁愿保持简单。0 d' f" Y8 x2 \' {9 J3 w3 E; v* Y
7 ] D1 M) Z2 S+ p2 p: e3 h: ]
解决方案: H+ ^0 t9 X2 I! X. h+ E
2 ~9 I. Q" U# {) x7 \7 U0 w
; u& i9 V9 {- R8 K9 j* g# M: ]" [( `+ b* J! h: V8 r* ~, y
如果您使用的SQL Server版本知道datetimeoffset类型,则可以使用以下语法来获取服务器的本地tz偏移量:/ q& v2 G# p2 S- E5 t8 c; L) O
select datepart(tz,sysdatetimeoffset())
+ c& ?- x o; I6 l; [结果在MINUTES中。 |
|
|
|
|
|