【问题标题】:How to generate timestamp value for binary(8) field?如何为二进制(8)字段生成时间戳值?
【发布时间】:2014-01-15 01:46:10
【问题描述】:

我的表中需要两个时间戳字段。一种是用于更新操作的时间戳类型,一种是用于插入的(二进制(8))。

时间戳类型的值是由 sql server 自动生成的, 从哪里获取第二列的值?

【问题讨论】:

  • 但是 SQL Server 中的 TIMESTAMP 数据类型与正常的、人类可读的日期和时间完全没有...它只是一个二进制“计数器” of sorts....如果您需要 timestamp 作为操作的日期和时间,则需要在 SQL Server 2008 中使用 DATETIME2;对于INSERT,您可以定义一个默认约束,它会在插入一行时自动填充它;对于UPDATE,您需要向该表添加触发器
  • 但是为什么需要将timestamp 存储为binary?如果你有一个代表timestampbinary 值并且你想存储这个timestamp,那么将binary 转换为timestamp 然后将它插入到你的数据库中不是更好吗?
  • @marc_s 你从哪里得到我认为该类型代表日期时间的信息? ...
  • @drigoangelo 我需要使用该值创建一个表。时间戳内部是 8 个字节的二进制字段。在一个表中只能有一个该类型的字段,但我需要两个用于同步目的。
  • this question 对您有帮助吗?

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


【解决方案1】:

我不确定你的问题,但是:

SELECT CONVERT(varbinary(8), CAST(CONVERT(DATETIME, GETDATE()) AS TIMESTAMP))

【讨论】:

  • 通常我需要这两列来进行同步。一列(时间戳类型)用于增加记录中的修改,以及插入新记录的插入时间戳。对这两个字段进行划分操作将使我有机会检查哪些记录是从上次同步中插入的,哪些记录是更新的。我只是想应该手动插入什么(用于新记录)......
猜你喜欢
  • 1970-01-01
  • 2014-07-06
  • 1970-01-01
  • 1970-01-01
  • 2018-04-06
  • 2010-12-24
  • 2011-04-02
  • 1970-01-01
  • 2010-11-15
相关资源
最近更新 更多