管理日期和日期的最佳做法

时间:2015-04-08 12:06:40

标签: php mysql sql date date-manipulation

我正在开展一个项目,我需要管理很多操作。 每个操作都有一个结束日期,由一定数量的任务组成。

如果在[end date] - X days之前没有完成任务,我想显示提醒(屏幕上显示的文字)。

所有数据都存储在 MySQL 数据库中,我使用 PHP HTML5

  • 哪种数据类型( )最适合处理日期和日期(到 执行计算)?
  • 我可以使用Date()并轻松减去日期吗?

我没有具体的技术问题,但我认为分享最好的方法是好事,对吗?

我很想知道进行任何提案的最佳方式是什么!

3 个答案:

答案 0 :(得分:3)

我建议您将日期存储在mysql的字段 timestamp ,因为您可以使用默认值 CURRENT_TIMESTAMP - 这非常有帮助, 我认为你不应该担心它,有很多功能::

MySQL的:

select now();
+---------------------+
| now()               |
+---------------------+
| 2015-04-08 12:13:18 |
+---------------------+
select now() - interval 1 day;
+------------------------+
| now() - interval 1 day |
+------------------------+
| 2015-04-07 12:13:29    |
+------------------------+
select now() - interval 7 day;
+------------------------+
| now() - interval 7 day |
+------------------------+
| 2015-04-01 12:13:38    |
+------------------------+
select now() - interval 1 month;
+--------------------------+
| now() - interval 1 month |
+--------------------------+
| 2015-03-08 12:13:58      |
+--------------------------+

PHP:

<?php
var_export([
    date('Y-m-d H:i:s', strtotime('now')),
    date('Y-m-d H:i:s', strtotime('- 1 day')),
    date('Y-m-d H:i:s', strtotime('- 7 day')),
    date('Y-m-d H:i:s', strtotime('- 1 month')),
]);
/*
Result:

array (
  0 => '2015-04-08 15:15:42',
  1 => '2015-04-07 15:15:42',
  2 => '2015-04-01 15:15:42',
  3 => '2015-03-08 15:15:42',
)
*/

有时创建表格非常有用:

CREATE TABLE t1 (
    ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

结果你的字段ts将被自动设置和更新......

答案 1 :(得分:1)

您可以在数据库中将日期存储为DATETIME

然后在PHP中使用strtotime()date()函数将其转换为可管理的数据

答案 2 :(得分:0)

要使用的最佳数据类型是DateTime类。

为了使用DateTime类执行减法,您需要使用DateInterval类。

你需要一些时间来使用这两个类来轻松自如,但它会在afterwoods之后使格式化或日期操作更容易。