Comparing two time columns in ASP.NET
我对ASP.NET和SQL比较陌生,所以我很难找到比较两个时间列的方法。我在.mdb数据库中有一个时间戳列,然后有一个now()列。我需要一个从时间戳开始"大于或等于3小时"的网格视图显示记录。你知道我该怎么做吗?
时间戳通常用于跟踪对记录的更改,并在每次更改记录时更新。如果要存储特定值,则应使用日期时间字段。
如果您使用的是datetime列,并且希望结果为tsql,请尝试
1
| DATEDIFF(Hour, 'Your DateTime Column here', 'pass Now() here' ) |
尝试在tsql中执行此示例:
1
| select DATEDIFF(Hour, '2012-11-10 00:00:59.900', '2012-11-10 05:01:00.100') |
号
- 这里是何时使用日期时间或时间戳
- 谢谢你的回复,是的,我想我误用了"时间戳"这个词。我使用它作为一个通用术语,而不是实际的时间戳函数。我在插入记录时使用了now()函数。因此,它只捕获插入记录的时间,问题是现在我需要检查表中是否有超过3小时的记录。
- 如果您使用的是datetime列,并且希望在tsql中得到结果,请尝试DATEDIFF(Hour, 'Your DateTime Column here', 'pass Now() here' )。
- 我正在使用Visual Studio 2010,并且正在使用ASP.NET。所以我试图用超过3小时的记录填充一个网格视图。如何使用select语句来实现这一点?我不是一个很先进的程序员,所以一步一步的指令会很好,谢谢!
Transact-SQL时间戳数据类型是一种没有时间相关值的二进制数据类型。
所以要回答您的问题:有没有方法从timestamp类型列中获取日期时间值?
答案是:不
您需要另一列datetime2类型,并使用>运算符进行比较。您可能需要设置getutcdate()的默认值,以便在插入每一行时对其进行设置。
更新:
由于列是datetime类型,而不是timestamp类型(在SQL Server中有一个名为timestamp的类型,因此出现了混淆),您可以这样做。
埃多克斯1〔6〕
确保服务器与代码在同一时区内运行。以UTC格式存储所有日期可能更安全。在这种情况下,使用GETUTCDATE代替GETDATE
- 谢谢你的回复。不过,我不确定我是否理解你的回答。我来解释一下我到底发生了什么。我有一个.mdb文件,我需要将一列的时间戳与now()函数进行比较。我正在数据库中输入记录,当我输入该记录时,我使用now()函数为"timeCalled"列设置时间戳。然后我需要在GridView或ListView中显示所有3小时或更久的记录。此列是"日期/时间"数据类型。我该如何编写一个SQL语句来选择那些早于或大于3小时的记录?
- 再次感谢您的快速回复!我现在就给这个机会!我不知道如何准确地使用dateadd函数。再次为混乱感到抱歉!
- 把>=改成<=,因为我认为你需要在过去3小时内录制。
- 我试过了,但它不理解"getDate()"
- msdn.microsoft.com/en-us/library/ms188383.aspx
- 当我尝试在Visual Studio 2010中执行该查询时,得到以下错误:错误源:Microsoft Jet数据库引擎,错误消息:表达式中的未定义函数"GetDate"。
- 哦,对不起,你用的是access。您需要将其作为参数传递。只需传递EDOCX1[2]的值
- 好的,这样做时,我会收到以下错误:没有为一个或多个必需参数给定值。我的查询如下:从客户那里选择referenceid、firstname、lastname(timecalled<=dateadd([hour],-3,now()))
- 不需要,您需要将当前日期时间作为参数传递给SQL查询。了解参数化查询。或者呈现查询中的实际日期时间-DATEADD([hour], - 3, '2012-12-13 13:23:22'))。
- 当尝试在查询中使用实际时间时,我仍然会得到关于没有给定值的错误。不知道我做错了什么。"hour"参数在该查询中做什么?
- 将使用:select referenceid,firstname,lastname from customers where(datediff([hour],timecalled,now())>=3)is a valid statement?顺便说一下,我是在Visual Studio的查询生成器部分中键入这个命令的。当我执行那个查询时,我仍然会得到一个错误,说一个或多个必需参数没有变量give。
- 好吧,在把它弄乱一段时间后,我终于用你的陈述让它工作了,但我不得不把"小时"改成"H"。它不理解"小时"是什么。非常感谢你的帮助和原谅我的无知!