2012-07-16 47 views
1

我想筛选NOW()和NOW之间的间隔10分钟(?)之间的SELECT查询,但我似乎无法得到此工作,并且它是给了我关于这个话题的几个问题。使用WHERE子句中两个日期之间的差异

我已经浏览了一些在线文档,以及很多关于stackoverflow的问题,但非解决方案给了我我需要的东西。查看TIMEDIFF和TIMESTAMPDIFF文档,我只看到它像这样使用;

SELECT TIMESTAMPDIFF(SECOND,'2007-12-30 12:01:01','2007-12-31 10:02:00'); 

但是,我不想只是选择时差,我想在查询中使用它作为WHERE子句,就像;

SELECT * FROM tableName WHERE (the time difference betweeen NOW() and the stored timestamp is less than x minutes); 

是否有我需要设置我的列的特定数据类型? 如何正确使用TIMEDIFF/TIMESTAMPDIFF,如果这些不是我应该使用的正确方法,那是什么?

+0

所以,从本质上讲,你要知道,如果一个日期之间的其他两个日期? – Jodrell 2012-07-16 09:57:18

+0

在你的第一个例子中,你正在按照错误的顺序指定'BETWEEN'的条款(应该是'BETWEEN最小和最大',你确定那不是问题吗? – fvu 2012-07-16 09:58:07

+0

这仅仅是我从某处取得的一个例子,但现在的答案已经解决了我的问题,我应该知道这将会是一件非常简单的事情! – 2012-07-16 10:00:00

回答

4
SELECT * FROM tableName WHERE TIMESTAMPDIFF(MINUTE,timestamp,NOW()) < 10 
+0

,因此答案似乎如此简单::)谢谢。 – 2012-07-16 09:59:22

+0

+1表示存储的时间戳小于x分钟*。 – 2012-07-16 09:59:59

2
SELECT * FROM tableName 
WHERE now() - interval 10 minute < stored_timestamp 
+0

+1为了保持查询的可靠性,并且不将时间戳列包装在函数中进行比较。 – 2012-07-16 09:59:08

+0

@ZaneBien我不确定,但我认为,对于某些可被挑剔的事物,左边的一部分条件不应该是一个表达。 – 2012-07-16 10:06:29

+0

我注意到,然而(有点偏离问题),mysql中的时间戳以“year:month:day hour:minute:second”的形式存储,但C#的datetime.now()输入到表单中的数据库“日:月:年小时:分:秒”在SQL中有更改时间戳格式的方法吗? – 2012-07-16 10:07:58