首先:恭喜!没有 SQL Server 2000,您会很高兴!
第二:SELECT ... FOR XML EXPLICIT
已过时,应该(在几乎所有情况下)替换为SELECT ... FOR XML PATH('xyz')
. 这为您提供了更好的控制和非常直观的方法。
现在回答你的问题:
正如您现在肯定的那样,TIMESTAMP
除了 ANSI-SQL,它与 T-SQL 相同,它是DATETIME
一种二进制类型,最好与同义词一起使用ROWVERSION
以避免混淆。
SQL Server 2014 将隐式转换二进制数据以base64
让您将其包含在 XML(基于文本)中。
试试这个:
DECLARE @varBin VARBINARY(MAX)=0x00000000057A12B8;
DECLARE @asXML XML= (SELECT @varBin FOR XML PATH('xyz'));
SELECT @asXML;
--result: <xyz>AAAAAAV6Erg=</xyz>
--re-read the value
SELECT @asXML.value('/xyz[1]','varbinary(max)')
--result: 0x00000000057A12B8
你得到的数值只是表示相同值的十进制数:
HEX 57A12B8
DEC 91.886.264
BIN 0101 0111 1010 0001 0010 1011 1000
有了这个查询
SELECT CAST(@varBin AS BIGINT)
你会得到这个号码 - 如果你需要它......