2013-02-20 103 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