比较ASP.NET中的两个时间列

时间:2012-12-13 17:14:31

标签: tsql

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

2 个答案:

答案 0 :(得分:0)

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

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

答案是:否

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

更新:

由于列是datetime类型而不是timestamp类型(SQL Server中有一个名为timestamp的类型,因此存在混淆),您可以这样做

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

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

答案 1 :(得分: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')