2017-04-25 61 views
0

我將日期存儲爲'd-m-Y H:i:s'。其中日期晚於

我需要檢查這個存儲日期是否晚於$limit_date變量。 $limit_date變量是當前日期的-30天,存儲在'd-m-Y'中。

我曾想過下面的工作,但沒有結果返回。

$limit_date = strtotime('-30 day'); 
$limit_date = date("d-m-Y", $limit_date); 

$this->db->where('date_submitted >', $limit_date); 

我的測試date_submitted是 '25-04-2017 09:13:13' 與$limit_date返回'26 -03-2017' 。

+0

有你嘗試在格式化$ limit_date時使用'dmY H:i:s'添加?您最好使用UNIX時間格式格式的日期,然後確定日期是否晚於存儲的日期。 – mickburkejnr

+0

_「我的測試date_submitted是'25 -04-2017 09:13:13'與$ limit_date返回'26 -03-2017'」_ - 您正在比較_strings_這裏,並且這是每個字符出現的情況。第一個字符在兩個值中都是'2',所以我們必須看看下一個 - '5'和'6','6'是比'5'更大的字符,所以不匹配。 //在表格中使用適當的日期列類型,然後使用MySQL日期/時間函數創建比較間隔。 – CBroe

回答

0

在這段代碼中,我們使用DateTimeDateIntervalDateInterval用於減去您想要的確切天數。

Try this code snippet here

<?php 
ini_set('display_errors', 1); 
$days=30; 
$object = new DateTime("25-04-2017 09:13:13");//giving the date from which we want to subtract. 
$object->sub(new DateInterval("P".$days."D"));//passing the interval which we want to subtract 
echo $object->format("d-m-Y H:i:s"); 
1

試試這個:

$limit_date = strtotime('-30 day'); 
$limit_date = date("d-m-Y H:i:s", $limit_date); 

$this->db->where('date_submitted >', $limit_date); 
0

我認爲這將是更好,如果你轉換爲date_submitted在你的數據庫爲DATE,如果你不想用亂七八糟小時查詢:分:秒

實施例:

$limit_date = strtotime('-30 day'); 
$limit_date = date("d-m-Y", $limit_date); 
$this->db->where('DATE(date_submitted) >', $limit_date); 
0

嘗試:

WHERE date_submitted > DATE_ADD(CURDATE(), INTERVAL - 30 DAY) // for 30days 

WHERE date_submitted > DATE_ADD(NOW(), INTERVAL - 30 DAY) // for 30*24hours 
1

我認爲要更改日期字段的字符串到日期

STR_TO_DATE(date_submitted, '%Y-%間%d')

$limit_date = date('Y-m-d', strtotime('-30 days')); 

$this->db->where('STR_TO_DATE(date_submitted, '%Y-%m-%d') >', $limit_date); 
+1

感謝它對我的工作很好。 –

相關問題