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