2017-04-25 62 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

感谢它对我的工作很好。 –

相关问题