如何使用Datetime存储BIGINT数据类型作为会话id.蜱虫c#
本文关键字:会话 id 蜱虫 数据类型 何使用 Datetime 存储 BIGINT | 更新日期: 2023-09-27 17:53:58
我试图将当前datetimeticks
的完整值存储到bigint
SQL数据类型作为会话ID。但是无法成功转换数据类型。
我的目标是在c#中获得当前的Datetime.Ticks
,并将其存储为SQL Server中的SessionId
。(version 2008 R2)
在SQL Server中,我声明SessionId为bigint
,如下所示:
[Session_Id] [bigint] NOT NULL
在c# (Winform)中,我目前使用这个(工作良好):
long sessionId;
sessionId = Convert.ToInt64((long)BigInteger.Divide(DateTime.Now.Ticks,(BigInteger)5445654850112.1245));
我尝试使用不截断值从BigInteger如下,但它抛出错误。
BigInteger sessionId = DateTime.Now.Ticks;
当我使用上面的代码时,我得到的快照错误是:
BigInteger_Error
我也尝试转换为Int64,但同样的错误仍然存在。
BigInteger sessionId = Convert.ToInt64(DateTime.Now.Ticks);
根据MSDN
来源,SQL Server中BIGINT的大小为8字节
c# (system . numeric)中2 ^ 63 (-9223372036854775808) 2 ^ 63 - 1 (9223372036854775807)
和BigInteger没有上界或下界
请提供替代建议/修复此错误,因为我的目标是将完整的datetimeticks
存储为SessionId
使用。net BigInteger是不必要的。根据SQL Server映射,long
映射到BIGINT
。
long sessionId = DateTime.Now.Ticks
你现在必须能够存储sessionId
的值来代替[session_Id] BIGINT NOTNULL
首先,转换BigInteger是多余的,因为long (Int64)
在SQL Server中意味着BIGINT
。其次,只要数据类型是long,就可以简单地将sessionId
值设置为Ticks。你基本上是在无缘无故地将同一个类型强制转换两次。
//Timespan.Ticks is a long data type.
long sessionId = DateTime.Now.Ticks;