duan3019 2013-02-20 08:17 采纳率: 100%
浏览 42
已采纳

查询以获取UNIX时间戳为今天的行

In my DB I have UNIX Timestamps as due dates for jobs that need to run. On a given day or a given hour I'd like to know which jobs need to run. I have the following code to query my jobs table:

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

The last array is just pseudo code of course. I came up with the following code to figure out if a timestamp is today.

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

How would I combine that with my query? Is there a better way then looping through the queried array?

  • 写回答

1条回答 默认 最新

  • doujingya1166 2013-02-20 08:24
    关注

    Now, this is probably not a good way but it was the first that came to mind.

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

    You can use the date from that snippet and set a WHERE due_date > $today I'm not quite sure how to do that with your database model.

    edit: This relies on that you have correct timezone settings in your php configuration.

    As sebastian pointed out, this will get all future dates also, but you could simply use the same technique to get the last timestamp of the day

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

    and the use a BETWEEN operator in your SQL-query

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?