3

我对 ASP.NET 和 SQL 比较陌生,所以我很难弄清楚如何比较两个时间列。我在 .mdb 数据库中有一个带时间戳的列,然后是一个 Now() 列。我需要一个 gridview 显示时间戳中“大于或等于 3 小时”的记录。知道我怎么能做到这一点吗?

4

2 回答 2

0

Transact-SQL 时间戳数据类型是没有时间相关值的二进制数据类型。

所以回答你的问题:有没有办法从时间戳类型列中获取 DateTime 值?

答案是不

您需要另一列datetime2类型并使用>运算符进行比较。您可能希望设置默认值getutcdate()以在插入每一行时设置它。

更新:

由于该列是datetime类型而不是timestamp类型(SQL Server 中有一种类型称为timestamp,因此会造成混淆),您可以这样做

WHERE [TimeCalled] <= DATEADD(hour, -3, GETDATE())

确保您的服务器与您的代码在同一时区运行。以 UTC 格式存储所有日期可能更安全。在这种情况下,请GETUTCDATE改用GETDATE

于 2012-12-13T17:18:16.340 回答
0

时间戳一般用于跟踪记录的更改,并在每次记录更改时更新。如果要存储特定值,则应使用日期时间字段。

如果您使用的是 DateTime 列,并且想要 TSQL 中的结果,请尝试

DATEDIFF(Hour, 'Your DateTime Column here', 'pass Now() here' )

尝试在 TSQL 中执行此示例:

select DATEDIFF(Hour, '2012-11-10 00:00:59.900', '2012-11-10 05:01:00.100')
于 2012-12-13T17:19:23.900 回答