php选择具有不同日期格式的查询

时间:2012-02-08 10:16:23

标签: php mysql

我有一个名为$ date的变量,日期格式如2012-01-30。另一方面,我在mysql表中有一个名为srt_date_sortie的字段。该字段的格式类似于2012-01-30 11:31:00。我想选择所有记录,其中$ date和srt_date_sortie具有相同的日期而不考虑时间。希望有人可以提供帮助。

mysql_query("SELECT * FROM sorties WHERE srt_date_sortie = '$date'");

下面我将如何构建$ date:

++$input;
$test=$input." days";
$date=date('Y-m-d', strtotime($test));

提前感谢您的回复。干杯。马克

7 个答案:

答案 0 :(得分:2)

使用BETWEEN关键字更改日期开始时间和结束时间的查询。

答案 1 :(得分:2)

出于性能原因,您应该避免与DATE(srt_date_sortie)之类的派生列进行比较,因为这会阻止使用任何索引。这否定了已发布的一些解决方案。

查询DATETIME字段的最有效方法是使用范围查询,例如:

mysql_query("SELECT * FROM sorties WHERE srt_date_sortie BETWEEN '$date 00:00:00' AND '$date 23:59:59'");

除非您需要表中的所有行,SELECT *可能效率低下,否则只需列出需要检索的行。

答案 2 :(得分:0)

您可以使用mysql中的DATE_FORMAT格式化日期

mysql_query("SELECT * FROM sorties 
             WHERE DATE_FORMAT(srt_date_sortie,'%Y-%m-%d') = '$date'");

答案 3 :(得分:0)

mysql_query("SELECT * FROM sorties WHERE DATE(srt_date_sortie) = '$date'");

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date

答案 4 :(得分:0)

mysql_query("SELECT * FROM sorties WHERE srt_date_sortie  LIKE '%2012-01-30%'");

答案 5 :(得分:0)

$date=date('Y-m-d H:i:s', strtotime($test));

使用它

答案 6 :(得分:0)

检查TIMESTAMPDIFF mysql函数

mysql> SELECT TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01');
        -> 3
mysql> SELECT TIMESTAMPDIFF(YEAR,'2002-05-01','2001-01-01');
        -> -1
mysql> SELECT TIMESTAMPDIFF(MINUTE,'2003-02-01','2003-05-01 12:05:55');
        -> 128885