将varchar转换为SQL Server 2008 R2中的时间戳

Kli*_*Max 1 sql-server timestamp sql-server-2008-r2

timestampSQL Server 2008 R2 中有一列包含列.当我只将这个列添加到我的表时,我看到这样的值0x00000000000007D1.我尝试将数据放入其中:

UPDATE test_time SET date3=
CONVERT(TIMESTAMP, CONVERT(datetime,'2002-08-20 14:00:00.000',120))
WHERE ogr_fid=1
Run Code Online (Sandbox Code Playgroud)

但得到错误

无法更新时间戳列

这有什么不对?

mar*_*c_s 7

SQL Server的TIMESTAMP数据类型与日期和时间无关!

它只是一个连续数字的二进制表示 - 它唯一有利于确保一行在读取后没有变化.

在从不版本的SQL Server中,它被调用RowVersion- 因为它确实是它的本质.请参阅ROWVERSION上MSDN文档:

是一种在数据库中公开自动生成的唯一二进制数的数据类型.rowversion通常用作版本标记表行的机制.rowversion数据类型只是一个递增的数字,不保留日期或时间.要记录日期或时间,请使用datetime2数据类型.

因此,您无法将字符串转换为TIMESTAMPSQL Server中的字符串.