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

但得到错误

无法更新时间戳列

这里有什么问题?

4

1 回答 1

7

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

它只是一个连续数字的二进制表示——它只有助于确保一行在被读取后没有改变。

在从未有过的 SQL Server 版本中,它被调用RowVersion——因为它确实是这样的。请参阅ROWVERSION 上的 MSDN 文档

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

因此,您不能TIMESTAMP在 SQL Server 中将字符串转换为 a 。

于 2013-05-14T05:19:46.597 回答