在 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