如何使用DataReader从SQL Server检索时间戳值
本文关键字:检索 时间戳 Server SQL 何使用 DataReader | 更新日期: 2023-09-27 18:10:54
如何从使用DataReader
的SQL Server检索时间戳值(例如:0x000000048E18B9D8) ?当我这样做时,我得到了一个IndexOutOfRangeException
DateTime date = reader.GetDateTime(reader.GetOrdinal("Timestamp"));
有人能帮忙吗?
我还想知道如何使用。net代码传递时间戳参数到存储过程
在reader.Getordinal()
上抛出IndexOutOfRangeException
表明不存在称为Timestamp
的列。再次检查列名,并用实际值替换。默认情况下,它将被称为timestamp
,但只有在您没有指定列名的情况下。
您也可以尝试string ts = reader["timestamp"].toString()
,并确保它返回一些东西。
根据MSDN, TIMESTAMP
数据类型是"8 bytes…[and]…"只是一个递增的数字,不保留日期或时间。要记录日期或时间,请使用日期时间数据类型。"
因此,reader.GetInt64()
可能是接近的,如果你真的需要这个值,但byte[] myTimestamp = reader["timestamp"]
可能更好。
只要将其传递回存储过程,就可以使用SqlDbType.Timestamp
创建一个新参数。该值将是一个字节数组,或者,如果您将其存储为字符串,您可以尝试这样做:
cmd.Parameters.Add("@TimeStampParam", SqlDbType.Timestamp).Value = System.Text.Encoding.ASCII.GetBytes(myTimestampStr);`
(注:我还没有测试过,但应该足够接近)。
请注意,TIMESTAMP
已弃用,ROWVERSION
不是首选语法