Asp.net存储DateTime / long到最小可比值

时间:2017-11-27 08:48:20

标签: c# asp.net sql-server datetime

我正在开发一个相当大的SQL数据库项目,需要一些历史记录跟踪。我知道SQL有像Data Capture这样的东西,但我需要更多的控制,而不仅仅是存储数据的备份副本以及其他要求。

这是我想要做的,我在这里找到了一些类似的问题,如

get-the-smallest-datetime-value-for-each-day-in-sql-database

how-can-i-truncate-a-datetime-in-sql-server

我想要避免的是这些答案中提到的事物的类型,我的意思是它们在查询期间需要某种转换,即截断DateTime值,我想要什么要做的是获取DateTime.Ticks或其他DateTime属性,并进行单向转换为较小的类型以创建"版本"在数据库更新/插入后,可以快速查询而不进行任何类型的转换的每条记录。

我对简单地将DateTime.Ticks中的long存储为版本或使用类似Base36字符串的问题是在查询期间比较字段所需的大小和时间。

任何人都可以指出我正确的方向如何 安全 DateTime.Tickslong转换为可以直接比较的内容在查询期间?我的意思是,我希望能够使用以下内容找到历史记录:

int versionToFind = GetVersion(DateTime.Now);   

var result = from rec in db.Records
             where rec.version <= versionToFind
             select rec;

int versionToFind = record.version; 

var result = from rec in db.Records
             where rec.version >= versionToFind
             select rec;

这里要提到的一点是,我并不反对使用其他快速跟踪数据历史记录的方法。我只需要最快最小的解决方案,以便能够为每条记录生成和比较版本。

0 个答案:

没有答案