【发布时间】:2018-05-15 16:41:14
【问题描述】:
我使用now() 函数来获取日期。我尝试添加具有许多功能的月份,例如:
$today= date("Y-m-d");
$date1 = date('Y-m-d', strtotime($today, ' + 1 month'));
在将 $date1 加载到 MySQL DB 之后,但是当我在 DB 中看到插入的日期是 0000-00-00。
这个月怎么加?
【问题讨论】:
我使用now() 函数来获取日期。我尝试添加具有许多功能的月份,例如:
$today= date("Y-m-d");
$date1 = date('Y-m-d', strtotime($today, ' + 1 month'));
在将 $date1 加载到 MySQL DB 之后,但是当我在 DB 中看到插入的日期是 0000-00-00。
这个月怎么加?
【问题讨论】:
你把它弄得比它需要的复杂了。
$date1 = date('Y-m-d', strtotime(' + 1 month'));
strtotime() 如果您不传递日期和时间,将假定“现在”。
否则,按照您的调用方式,您应该会看到此错误:
警告:strtotime() 期望参数 2 为整数,字符串在 /tmp/execpad-a8173d5d91cb/source-a8173d5d91cb 行中给出
这是因为strtotime() 期望第二个参数是 Unix 时间戳,而您清楚地提供了一个字符串。您的代码的壁橱近似值是
$today= time();
$date1 = date('Y-m-d', strtotime(' + 1 month', $today));
如果日期仍然错误地进入数据库,那么您的日期代码之外的问题。
【讨论】:
MySQL 中的日期显示为0000-00-00 00:00:00 通常表明您尝试存储在数据库中的日期格式无效/MySQL 未将其识别为日期。可能是您插入或更新日期值的方式有问题?
你也可以直接在MySQL中给一个日期加上月份,而无需在PHP中使用MySQL的内置函数DATE_ADD()进行计算:
SELECT DATE_ADD(NOW(), INTERVAL 1 MONTH);
例如查询
SELECT DATE_ADD('2018-05-15 12:34:56', INTERVAL 1 MONTH);
将返回结果:
+---------------------------------------------------+
| DATE_ADD('2018-05-15 12:34:56', INTERVAL 1 MONTH) |
+---------------------------------------------------+
| 2018-06-15 12:34:56 |
+---------------------------------------------------+
1 row in set (0.00 sec)
使用它,您还可以直接将日期值更新为提前一个月的日期:
UPDATE table_name SET column_name = DATE_ADD(NOW(), INTERVAL 1 MONTH)
WHERE id = your_id;
(根据需要替换table_name、column_name、id和your_id。)
【讨论】: