C# 如何在WPF中读取系统时间以更新SQL Server时间戳字段?

C# 如何在WPF中读取系统时间以更新SQL Server时间戳字段?,c#,sql-server,wpf,datetime,timestamp,C#,Sql Server,Wpf,Datetime,Timestamp,为了组织精简的基于数据库计时器的轮询,每次更新数据库表时,我都需要更新SQL Server 2008数据库中的时间戳字段(然后进行轮询,读取其值,与前端中的值进行比较,并决定读取整个表) 关于所有这些,我如何读取系统时间来编写时间戳?要使用的SQL Server字段的数据格式(DataTime或Time)?以及如何比较这种格式的值?您是说TIMESTAMP类型的数据库列吗 这些是SQL Server将在内部更新的二进制时间戳-它们与日期和/或时间无关-实际上,它只是一个二进制编码的计数器。这些字

为了组织精简的基于数据库计时器的轮询,每次更新数据库表时,我都需要更新SQL Server 2008数据库中的时间戳字段(然后进行轮询,读取其值,与前端中的值进行比较,并决定读取整个表)


关于所有这些,我如何读取系统时间来编写时间戳?要使用的SQL Server字段的数据格式(DataTime或Time)?以及如何比较这种格式的值?

您是说
TIMESTAMP
类型的数据库列吗

这些是SQL Server将在内部更新的二进制时间戳-它们与日期和/或时间无关-实际上,它只是一个二进制编码的计数器。这些字段由系统处理,它们可靠且非常准确-如果您想要某种乐观并发锁定机制,请使用此字段类型

如果您想要一个
DATETIME
字段,其中包含上次修改的日期和时间,那么最好的选择是在该表上设置一个AFTER INSERT/AFTER UPDATE触发器,该触发器会自动将上次更新的列设置为SQL Server的当前日期/时间,而无需对此执行任何操作


SQL Server 2005中的
DATETIME
精确到约3.33毫秒-在SQL Server 2008中,如果需要,
DATETIME 2
可以精确到100毫秒。因此,不要依赖
DATETIME
列来100%准确地检查是否有更改!3.33ms的准确度可能会产生误导性的结果

马克,谢谢你的澄清!请告诉我,在wpf应用程序端,用于保存和比较SQL Server的时间戳类型的c#数据类型是什么?@rem:TIMESTAMP的“本机”类型是
byte[8]
——一个8字节的数组。由于它是8个字节,您可以在服务器上轻松地将其转换为
BIGINT
(CAST(您的col为BIGINT)),然后使用.NET类型
long