我的数据库中有一个表将用户输入存储为开始日期和结束日期之后,我的用户必须选择一个时间范围,我必须在表中显示这些时间范围内的记录吗?
尝试了stritotime();
和许多其他部分,但不知怎的,我无法得到正确的结果..
任何可能的解决方案都将受到赞赏。
谢谢!
答案 0 :(得分:2)
可以与:
SELECT count(*) FROM `table`
where
created_at>='2011-03-17 06:42:10' and created_at<='2011-03-17 06:42:50';
或使用之间:
SELECT count(*) FROM `table`
where
created_at between '2011-03-17 06:42:10' and '2011-03-17 06:42:50';
这取决于你的记录你想要显示的内容,因为我没有看到你的桌子,例如你要做什么,所以只需改变计数(*)并得到你想要的记录。
编辑: 如果用户将选择一段时间,那么它们将是变量
然后就会有类似的东西
SELECT records FROM `table`
where
created_at >= '".$var_start_time."' and ended_at <= '".$var_end_time."';
答案 1 :(得分:1)
你可以在mysql查询中使用BETWEEN ... AND ...比较运算符 http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#operator_between
答案 2 :(得分:1)
您可以在SQL中执行此操作,这是推荐的方法。例如,如果将这些开始和结束时间存储在数据库表中作为本机DateTime类型,则可以使用DBMS的日期函数将范围选择为UNIX时间戳(如果这就是您想要的那样)。
SELECT UNIX_TIMESTAMP(`start_time`), UNIX_TIMESTAMP(`end_time`) FROM `table` WHERE `start_time` > INTERVAL -1 DAY AND `end_time` < NOW();
这是一个例子(假设您正在使用MySQL),您可以在其中选择表start_time
列在过去24小时内的所有行,end_time
列由当前服务器决定时间。
要获取格式化日期,然后在PHP中转换为UNIX时间戳,请使用:
SELECT `start_time`, `end_time` FROM `table` WHERE `start_time` > INTERVAL -1 DAY AND `end_time` < NOW();
然后在PHP中你可以这样做:
$result['start_time'] = strtotime($result['start_time']);
$result['end_time'] = strtotime($result['end_time']);
请注意,strtotime希望格式化日期符合PHP's date parsing rules found here。
P.S:您正在寻找的PHP函数是strtotime而不是stritotime。