【发布时间】:2011-09-14 03:42:51
【问题描述】:
我正在尝试开发一个模型对象来保存一个 Sql Server 行,除了 T-Sql/SqlServer 时间戳之外,我完全理解如何做到这一点。该表定义为:
CREATE TABLE activity (
activity_id int
, ip_address varchar(39)
, user_id varchar(255)
, message_text
, dt timestamp
)
当我将表格行解析为对象时,对于 int 或字符串,我希望执行以下操作:
ActivityID = (int)dataReader["activity_id"];
IPAddress = (string)dataReader["ip_address"];
但是我该怎么处理时间戳列呢?我在任何地方都找不到“时间戳”数据类型。我知道 Sql Server 将时间戳存储为 8 字节二进制文件,但这通常相当于 .NET 中的什么?
编辑添加: 一点额外信息...这是从我们大型机上的 DB2 表返回的一行,该表通过 Sql Server 视图传来。 “Rowversion”不是一个选项,DB2 将该列作为时间戳传递。如果时间戳和行版本相同,也许我可以将其视为一个,否则我会被时间戳卡住。
再次编辑添加:这个项目会让我发疯。至少,这将是一次短途旅行。无论如何,是的@JoelC 这是大型机上 DB2 数据库的 Sql Server 视图。我终于找到了我们的一位 DBA,他轻蔑地解释说,“当然”DB2 TIMESTAMP 将 Sql Server 视图视为日期时间。从他的语气中我猜只有菜鸟不知道这一点。这就是为什么他在实际视图中将其命名为“日期时间”,Duh! (我在示例中给了它一个不同的名称,以免触发对命名约定的评论——实际的数据模型图说它是一个 TIMESTAMP 并将其命名为时间戳)。因此,在这种情况下,显然必须将其转换为 DateTime。我想我可能会开始考虑成为一名 DBA,这样我也可以让程序员发疯。抱歉,如果我在这个问题上误导了任何回复者——这是无意的,因为我实际上希望时间戳是一个时间戳。傻我。特别感谢微软将字节数组数据类型命名为“时间戳”,因为它与日期和时间无关。我不知道哪个响应标记为答案。叹息。
【问题讨论】:
-
@Michael 这不是 OP 所要求的。我会使用日期时间,顺便说一句
-
DateTime对象呢,它可以保存你的时间戳。 -
您应该使用
rowversion而不是timestamp- 请参阅msdn.microsoft.com/en-us/library/ms182776.aspx -
如果我可以控制数据库,这是一个很好的建议,但我没有。这实际上是一个来自 Sql Server 视图的 DB2 表。
标签: c# sql-server tsql db2