C# SQL Server-基于datetime列更新表

C# SQL Server-基于datetime列更新表,c#,sql-server,C#,Sql Server,我试图创建一个表,在其中存储一些数据,其中一列是“开始时间”(C#long,以毫秒为单位)。我想通过触发器或类似的方法删除表中开始时间超过一个月的所有记录。这可能吗?我如何实现 编辑:long和DateTime之间的转换不是问题。更可能的情况是,如何使用某种触发器使该数据库自动清理该表。如果需要,我会将其转换为DateTime。假设您的[Start Time]列包含自UNIX纪元以来的毫秒数,则可以使用以下方法将其转换为SQL ServerDateTime: DATEADD(s, [Start

我试图创建一个表,在其中存储一些数据,其中一列是“开始时间”(C#long,以毫秒为单位)。我想通过触发器或类似的方法删除表中开始时间超过一个月的所有记录。这可能吗?我如何实现


编辑:long和DateTime之间的转换不是问题。更可能的情况是,如何使用某种触发器使该数据库自动清理该表。如果需要,我会将其转换为DateTime。

假设您的
[Start Time
]列包含自UNIX纪元以来的毫秒数,则可以使用以下方法将其转换为SQL Server
DateTime

DATEADD(s, [Start Time]/1000, '1970-01-01')
要删除所有超过一个月的记录,我们可以尝试:

DELETE
FROM yourTable
WHERE DATEADD(s, [Start Time]/1000, '1970-01-01') < DATEADD(month, -1, GETDATE());
删除
从你的桌子上
其中DATEADD(s,[Start Time]/1000,'1970-01-01')
假设您的
[Start Time
]列包含自UNIX纪元以来的毫秒数,则可以使用以下方法将其转换为SQL Server
日期时间

DATEADD(s, [Start Time]/1000, '1970-01-01')
要删除所有超过一个月的记录,我们可以尝试:

DELETE
FROM yourTable
WHERE DATEADD(s, [Start Time]/1000, '1970-01-01') < DATEADD(month, -1, GETDATE());
删除
从你的桌子上
其中DATEADD(s,[Start Time]/1000,'1970-01-01')
在日期时间类型字段中保留日期。 最好通过触发器避免计划定期完成的工作。 建议使用计划作业。下面的回答中描述了它的使用。

在日期时间类型字段中保留日期。 最好通过触发器避免计划定期完成的工作。 建议使用计划作业。下面的回答中描述了它的使用。

你究竟为什么要将datetime值存储得那么长?@ZoharPeled将时间戳存储得和UNIX历元时间一样长是完全正确的做法,有人会这么做是有原因的。@TimBiegeleisen我很清楚UNIX时间和使用它的正当理由,但是,当datetime存储在任何非datetime的数据类型中时,OP是否意识到这一点,或者只是使用了错误的数据类型(如10个中的其余8个)。我完全知道,然而,在我的例子中,这样做更容易一些,因为某些原因。你究竟为什么要将datetime值存储得那么长?@ZoharPeled将时间戳存储为UNIX epoch time那么长是完全正确的做法,有人会想这样做是有原因的。@TimBiegeleisen我很清楚UNIX时间以及使用它的正当理由,但是,当datetime存储在任何非datetime的数据类型中时,OP是否意识到这一点,或者只是使用了错误的数据类型(如10个中的其余8个)。我完全知道,但出于某些原因,在我的情况下,这样做更容易