格式化日期并使用php添加或减去来自mysql的日期天数

时间:2011-07-28 16:07:23

标签: php mysql

我正在使用mysql和php,目前我在我的数据库中有日期和时间但是当我使用sql获取日期时,无论什么日期我都会继续获得1970-01-01,但如果我尝试添加仍然没运气 !任何人都可以指导我

 $startDate = $result['startDate'];
 $date=date('Y-m-d',$startDate);
 echo $date;

它应该像01-07-2011。但它不是我也尝试过strtotime()。但它有助于帮助。任何人都可以帮助我。

 $date = strtotime(date("Y-m-d", strtotime($startDate)) . " +1 day");
 echo $date;

答案应该是2011-07-02但是它的1970-01-02

提前致谢

4 个答案:

答案 0 :(得分:2)

默认情况下,MySQL将其日期返回为'yyyy-mm-dd hh:mm:ss'字符串。您可能在PHP中将此字符串直接传递给date(),这是不正确的。 date()需要一个时间戳(自1970年1月1日以来的秒数)。由于您传递的是无效日期,因此默认为时间戳0,即1970年1月。

您可以强制MySQL使用SELECT UNIX_TIMESTAMP(yourdatefield)返回适合PHP使用的时间戳。但是,请记住,MySQL完全有能力在查询中进行日期数学运算。

答案 1 :(得分:1)

只要$ result ['startDate']是一个日期类型列,并且你的PHP版本大于5.0.2,你就是在寻找:

 $startDate = $result['startDate'];
 $date=date('Y-m-d',strtotime($startDate. ' +1 day'));
 echo $date;

答案 2 :(得分:1)

如果startDatedatetime类型,并且您想在php上使用date函数,则需要将查询更改为:

SELECT UNIX_TIMESTAMP(startDate) as startDate .....

答案 3 :(得分:1)

如果$result['startDate']是MySQL日期(或日期时间),则以下内容将起作用:

$startDate = $result['startDate'];
$date=date('Y-m-d',strtotime('+1 day', $startDate));
echo $date;