2012-07-25 109 views
0

通过表单的用户选择日期+时间,然后当他提交后,该代码运行此查询编辑现有的查询来搜索如果时间开始日期和结束日期之间

ABS(TIMESTAMPDIFF(HOUR , `start`, :time)) < 2 

是查找所有start与选定日期之间的差值小于2的行。

但是,现在我添加了一个新字段end,其中包含事件的结束日期和时间。

我的问题是,我应该如何编辑我现有的查询以返回所选日期在startend之间的行?

这是选择格式,开始结束日期+时间:2012-07-25 04:30

回答

1

使用BETWEEN

WHERE selected_date BETWEEN start AND end 

引述手册有关使用BETWEEN使用日期:

For best将BETWEEN与日期或时间值一起使用时的结果,请使用CAST()将值显式转换为所需的数据类型。示例:如果将DATETIME与两个DATE值进行比较,请将DATE值转换为DATETIME值。如果在比较DATE时使用字符串常量(如“2001-1-1”),则将该字符串强制转换为DATE。

+0

谢谢你。在我的情况下,所有的输入都像2012-07-25 04:30。那么我需要使用CAST()吗? – EnexoOnoma 2012-07-25 01:52:48

+0

如果它们的格式相同,而且它们是,则不需要使用它。 – 2012-07-25 01:56:49