【问题标题】:Convert varchar to timestamp in SQL Server 2008 R2在 SQL Server 2008 R2 中将 varchar 转换为时间戳
【发布时间】: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

但是报错

无法更新时间戳列

这里有什么问题?

【问题讨论】:

标签: sql-server sql-server-2008-r2 timestamp


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 不同软件中的时间戳不一样?
  • @KliverMax:在其他数据库系统中,timestamp 确实用于日期和时间。但对于 SQL Server - 它不是。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-21
  • 2010-10-15
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多