在 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 转换为时间戳的主要内容,如果未能解决你的问题,请参考以下文章

如何在 sql server 2008r2 中将行名更改为列名

无法将 jdbc 连接到 sql server 2008 r2

SQL SERVER 2008R2 错误码查询地址

windows 2012 r2怎么安装sql server 2008 r2

sql server2008升级到2008 R2出现问题

sql server 2008 r2 密钥