比较 ASP.NET 中的两个时间列
Posted
技术标签:
【中文标题】比较 ASP.NET 中的两个时间列【英文标题】:Comparing two time columns in ASP.NET 【发布时间】:2012-12-01 15:30:52 【问题描述】:我对 ASP.NET 和 SQL 比较陌生,所以我很难弄清楚如何比较两个时间列。我在 .mdb 数据库中有一个带时间戳的列,然后是一个 Now() 列。我需要一个 gridview 显示时间戳中“大于或等于 3 小时”的记录。知道我该怎么做吗?
【问题讨论】:
何时使用日期时间或时间戳是HERE 【参考方案1】:Transact-SQL 时间戳数据类型是没有时间相关值的二进制数据类型。
所以回答你的问题:有没有办法从时间戳类型列中获取 DateTime 值?
答案是:没有
您需要另一列datetime2
类型并使用>
运算符进行比较。您可能希望设置默认值 getutcdate()
以在插入每一行时设置它。
更新:
由于该列是datetime
类型而不是timestamp
类型(SQL Server 中有一个类型称为timestamp
,因此会造成混淆)你可以这样做
WHERE [TimeCalled] <= DATEADD(hour, -3, GETDATE())
确保您的服务器与您的代码在同一时区运行。以 UTC 格式存储所有日期可能更安全。在这种情况下使用GETUTCDATE
而不是GETDATE
【讨论】:
感谢您的回复。不过,我不确定我是否理解您的回复。让我更好地解释我正在发生的事情。我有一个 .mdb 文件,我需要比较一个带有 Now() 函数时间戳的列。我正在数据库中输入记录,并使用 Now() 函数为“TimeCalled”列添加时间戳,以便输入该记录。然后,我需要在网格视图或列表视图中显示 3 小时或更早的所有记录。此列是“日期/时间”数据类型。我将如何编写 SQL 语句来选择那些早于 3 小时或更长时间的记录? 再次感谢您的快速回复!我现在就试一试!我不确定如何准确使用 DATEADD 函数。再次抱歉造成混乱! 将>=
更改为 <=
,因为我认为您想要过去 3 小时内的记录。
当我尝试在 Visual Studio 2010 中执行该查询时,我收到以下错误:错误源:Microsoft Jet 数据库引擎,错误消息:表达式中未定义函数“GETDATE”。
哦,您正在使用 Access,抱歉。您需要将其作为参数传递。只需传递Now()
的值【参考方案2】:
时间戳通常用于跟踪记录的更改,并在每次记录更改时更新。如果要存储特定值,则应使用日期时间字段。
如果您使用的是 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')
【讨论】:
何时使用日期时间或时间戳是HERE 感谢您的回复,是的,我想我误用了“时间戳”这个词。我将其用作一般术语,而不是实际的时间戳功能。我在插入记录时使用了 Now() 函数。因此,它只是捕捉插入记录的时间,问题是我现在需要检查表中是否有超过 3 小时的记录。 如果您使用的是 DateTime 列并且希望在 TSQL 中得到结果,请尝试DATEDIFF(Hour, 'Your DateTime Column here', 'pass Now() here' )
我正在使用 Visual Studio 2010 并且正在使用 asp.net。所以我试图用超过 3 小时的记录填充网格视图。我将如何使用 SELECT 语句来做到这一点?我不是一个非常高级的程序员,所以一步一步的指导会很棒,谢谢!以上是关于比较 ASP.NET 中的两个时间列的主要内容,如果未能解决你的问题,请参考以下文章
通过asp.net中的数据表在asp gridview中添加按钮列
在 asp.net 中的多个页面上打印具有许多列标题的 Datagrid 表
有谁比较了解Asp.net(C#)中的loginview login 、CreatUserWizard这三个控件的?跪求大神