2013-07-30 34 views
-2

间觉得自己有些DATAS从数据库日期:PHP - 如何找到,如果日期是2个日期

$data['my_date']) 

类型是日期:YYYY-MM-DD

我想作用PHP来发现,如果$数据的情形[“my_date”])是两个日期之间等:

if ($data['my_date'] >= 2009-01-01 && $data['my_date'] <= 2009-12-31) { 
    $datas = '5'; 
} 
else { 
    $datas = 1; 
} 

预期它不工作,在条件没有得到核实。我该怎么办 ?

+1

你需要引用您的日期,否则他们被解释为整数运算('2009-01- 01 == 2007') –

+0

@CarlosCampderrós你应该发布你的答案(“需要引用你的日期”),因为这是解决方案。我很困惑已经犯了这个错误。 –

+0

@SébastienGicquel张贴为答案。别担心,过去我们都有愚蠢的无法解释的错误;-) –

回答

1

没有日期的文字语法,您应该将它们用引号引起来,并将它们视为字符串。如果您使用的格式为YYYY-MM-DD,则它可以按字母顺序排序,并且您当前的方法应该可以工作。

if ($data['my_date'] >= '2009-01-01' && $data['my_date'] <= '2009-12-31') { 
    $datas = '5'; 
} 
else { 
    $datas = 1; 
} 

如果不注明您的日期,你正在做的整数运算:

$data['my_date'] >= 2009-01-01 ====> $data['my_date'] >= 2007 
1

您需要将所有日期由strtotime()转换为时间戳,然后进行比较。

strtotime($data['my_date']) >= strtotime('2009-01-01')... 
+0

如果所有日期为“YYYY-MM-DD”(此格式可按字母顺序/数字排序),则无需调用strtotime。 –

+0

@Carlos:没有保证,安全一方更好 – 2013-07-30 10:53:05

+1

@RaheelHasan谢谢,真的很容易,我已经尝试过使用strtotime(),但它没有工作,因为我忘记了日期strtotime(' '2009-01-01') –

1

您使用strtotime()mktime()到您的日期转换成时间戳,然后进行比较。