2013-02-20 116 views
0

在我的数据库中,我将UNIX时间戳记作为需要运行的作业的截止日期。在给定的一天或一个特定的小时内,我想知道哪些工作需要运行。我有以下代码来查询我的作业表:查询以获取具有今天的UNIX时间戳的行

$job = Model_Job::find('first', 
array(
    'where' => array(
    array('status_id', 1), // active 
    array('due_date', today) 
))) 

最后一个数组当然是伪代码。我想出了以下代码来确定时间戳是否为今天。

date('Ymd', strtotime(Date::forge(time())->get_timestamp())) == date('Ymd', strtotime($job->due_date)) 

我该如何结合我的查询?有没有更好的方法,然后循环查询数组?

+0

你不能使用db日期查询吗? – Techmonk 2013-02-20 08:25:41

+0

问题是,Unix时间戳可以是一天中的任何时间,比如08:42:18,而不是一天,这是一个时间跨度。 – Sebastian 2013-02-20 08:29:29

+0

你可以检查你的表日期列col Techmonk 2013-02-20 08:35:38

回答

0

现在,这可能不是一个好方法,但它是第一个想到的。

$ today = strtotime('today 00:00');

您可以使用该片段中的日期并设置一个WHERE due_date > $today我不太清楚如何在数据库模型中执行此操作。

编辑:这依赖于你在你的php配置中有正确的时区设置。

塞巴斯蒂安指出,这将让所有未来的日期也行,不过你可以简单地使用相同的技术,以获得天

$todaystart = strtotime('today 00:00')); 
$todayend = strtotime('today 23:59:59')); 

和使用BETWEEN运营商的最后的时间戳在你的SQL-查询

+0

这是行不通的,因为它会得到所有未来到期日期。 – Sebastian 2013-02-20 08:28:25

+0

啊,当然,但这会很简单,可以使用相同的技术获取当天的最后一个时间戳,然后使用“BETWEEN”运算符代替。 – hank 2013-02-20 08:34:15

+0

'strtotime()'返回一个unix时间戳,不需要再使用'date()'。 – Arjan 2013-02-20 08:43:09