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