SQL Server 2008 R2 中有一个带有timestamp
列的表。当我只将此列添加到我的表中时,我会看到这样的值0x00000000000007D1
。我尝试将数据放入其中:
UPDATE test_time SET date3=
CONVERT(TIMESTAMP, CONVERT(datetime,'2002-08-20 14:00:00.000',120))
WHERE ogr_fid=1
但得到错误
无法更新时间戳列
这里有什么问题?
SQL Server 2008 R2 中有一个带有timestamp
列的表。当我只将此列添加到我的表中时,我会看到这样的值0x00000000000007D1
。我尝试将数据放入其中:
UPDATE test_time SET date3=
CONVERT(TIMESTAMP, CONVERT(datetime,'2002-08-20 14:00:00.000',120))
WHERE ogr_fid=1
但得到错误
无法更新时间戳列
这里有什么问题?
SQL Server 的TIMESTAMP
数据类型与日期和时间无关!
它只是一个连续数字的二进制表示——它只有助于确保一行在被读取后没有改变。
在从未有过的 SQL Server 版本中,它被调用RowVersion
——因为它确实是这样的。请参阅ROWVERSION 上的 MSDN 文档:
是一种在数据库中公开自动生成的唯一二进制数的数据类型。rowversion 通常用作对表行进行版本标记的机制。rowversion 数据类型只是一个递增的数字,不保留日期或时间。要记录日期或时间,请使用 datetime2 数据类型。
因此,您不能TIMESTAMP
在 SQL Server 中将字符串转换为 a 。