如何在php中生成日期

时间:2011-10-10 12:42:55

标签: php mysql

我在php中有关于约会的这个紧急问题。我想在特定日期之前查询数据库中的某些记录,比如我想要在30天内记录,所以首先是我得到当前日期,我想计算日期范围的另一端,我该怎么做?我需要在mysql查询或php中执行此操作吗?非常感谢!

3 个答案:

答案 0 :(得分:3)

你可以在mysql中轻松完成。

例如

SELECT * from myTable where date_column > date_sub(now(), interval 30 day);

now()或CURRENT_TIMESTAMP - >会给你一个当前日期的值。 date_subdate_add是用于添加或减去间隔的函数 从给定日期开始。

此处的文档: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-add

答案 1 :(得分:0)

您可以像这样在PHP中生成当前日期:

$current_date = date("Y-m-d"); // the output will be in the format YYYY-MM-DD
echo $current_date;

您可以在此处了解有关PHP日期和日期格式的更多信息:http://php.net/manual/en/function.date.php

您还可以使用WEEK()和MONTH()从数据库表中选择某些行。昨天我问了一个与之相关的问题:MySQL: Select data from a table where the date falls in the current Week and current Month

希望它能解决你的问题。

答案 2 :(得分:0)

通常认为在PHP中构造区间比使用MySQL的内置函数(例如NOW())更好。这是有充分理由的。

假设您使用NOW()SELECT t.foo, t.bar FROM table t WHERE created_at > DATE_SUB(NOW(), interval 30 day);)进行查询。该函数返回一个精度低至最后一秒的日期(例如'2006-04-12 13:47:36')。缓存此查询是非常无用的,因为它仅适用于此1秒的时间段。

大多数应用程序几乎不需要这种精确度,通常1天的准确度就足够了。您已经可以看到构建一个精度较低的查询更有益,因为结果是第一次缓存,任何后续查询都会在一天内达到缓存。

这是PHP中的一个例子

$pdo = new \PDO($dsn, $db_user, $db_pass);

$sql = 'SELECT t.foo, t.bar FROM table t WHERE t.created_at >= ?';
$stmt = $pdo->prepare($sql);
$stmt->bindValue(1, date('Y-m-d', strtotime('-30 days')));
$stmt->execute();

有关PDO的更多信息,请查看documentation