Sql server 将时间戳转换为xml
可以执行以下操作:Sql server 将时间戳转换为xml,sql-server,xml,timestamp,Sql Server,Xml,Timestamp,可以执行以下操作: SELECT SomeTimestampColumn FROM SomeTable FOR XML PATH('') 结果看起来像一个字符串 e、 g 但由于某些原因,SQL不允许我这样做 从SomeTable中选择CONVERTxml、SomeTimestampColumn 这里有两个相关问题: 除了XML路径之外,还有其他方法从sql或XML获取等效字符串吗 有没有更好的方法来捕获/转换时间戳到一个更易于操作的字符串?我需要在c应用程序之间来回传递它,并将使用它来确定在
SELECT SomeTimestampColumn FROM SomeTable FOR XML PATH('')
结果看起来像一个字符串
e、 g
但由于某些原因,SQL不允许我这样做
从SomeTable中选择CONVERTxml、SomeTimestampColumn
这里有两个相关问题:
除了XML路径之外,还有其他方法从sql或XML获取等效字符串吗
有没有更好的方法来捕获/转换时间戳到一个更易于操作的字符串?我需要在c应用程序之间来回传递它,并将使用它来确定在此期间没有其他人更改了该行
谢谢,
迈克这就是你想要做的:
SELECT convert(datetime, SomeTimestampColumn)
FROM SomeTable FOR XML PATH('SomeTimestampColumn')
如果希望列为XML类型
select
(select SomeTimestampColumn for xml path(''), type) as SomeTimestampColumn
from @T
或者如果您只想要值
select
T1.ID,
T3.N.value('.', 'varchar(50)') as SomeTimestampColumn
from @T as T1
cross apply
(select T1.SomeTimestampColumn for xml path(''), type) as T2(X)
cross apply
T2.X.nodes('SomeTimestampColumn') as T3(N)
结果
ID SomeTimestampColumn
----------- --------------------------------------------------
1 AAAAAAACDZg=
2 AAAAAAACDZk=
转换为Base64,您可以将其转换回Base64。下面是一些UDF的链接,这些UDF也可以进行转换
结果:
AAAAAAAAJ3k= AAAAAAAAJ3k= 0x0000000000002779 0x0000000000002779
谢谢你的回答,但它特别是时间戳数据类型,它不是datetime-它基本上是一种只能转换为binary8的内部数据类型,我无法确定如何将其转换为类似xml的字符串。所有好的片段,谢谢,现在测试每一个,看看哪一个工作得最好。你知道它对时间戳类型做了什么来将其转换成XML吗?我唯一担心的是,这似乎是一种单向转换,将其转换回二进制8似乎会产生垃圾,我不确定它是否会始终生成唯一的字符串行?@runnthespot-它被转换为base64,并且可以再次转换回二进制。
ID SomeTimestampColumn
----------- --------------------------------------------------
1 AAAAAAACDZg=
2 AAAAAAACDZk=
declare @T table(SomeTimestampColumn timestamp, id int)
insert into @T(id) values(1)
declare @Base64 varchar(max)
declare @Binary varbinary(max)
select
@Binary = T1.SomeTimestampColumn,
@Base64 = T3.N.value('.', 'varchar(50)')
from @T as T1
cross apply
(select T1.SomeTimestampColumn for xml path(''), type) as T2(X)
cross apply
T2.X.nodes('SomeTimestampColumn') as T3(N)
select
@Base64,
CAST(N'' AS XML).value('xs:base64Binary(xs:hexBinary(sql:variable("@Binary")))', 'VARCHAR(MAX)'),
@Binary,
CAST(N'' AS XML).value('xs:base64Binary(sql:variable("@Base64"))', 'VARBINARY(MAX)')
AAAAAAAAJ3k= AAAAAAAAJ3k= 0x0000000000002779 0x0000000000002779