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

Posted

技术标签:

【中文标题】在 SQL Server 2008 R2 中将 varchar 转换为时间戳【英文标题】:Convert varchar to timestamp in SQL Server 2008 R2 【发布时间】:2013-05-08 06:54:09 【问题描述】:

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

但是报错

无法更新时间戳

这里有什么问题?

【问题讨论】:

***.com/questions/4592658/… 【参考方案1】:

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

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

在从未有过的 SQL Server 版本中,它被称为 RowVersion - 因为它确实是这样的。见MSDN docs on ROWVERSION:

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

所以您不能在 SQL Server 中将字符串转换为 TIMESTAMP

【讨论】:

不同软件中的时间戳不一样? @KliverMax:在其他数据库系统中,timestamp 确实用于日期和时间。但对于 SQL Server - 它不是。

以上是关于在 SQL Server 2008 R2 中将 varchar 转换为时间戳的主要内容,如果未能解决你的问题,请参考以下文章