我有一个名为$ 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));
提前感谢您的回复。干杯。马克
答案 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