2012-02-08 47 views
0

我有一個變量叫做$ date,日期格式類似於2012-01-30。另一方面,我在mysql表中有一個名爲srt_date_sortie的字段。該字段的格式類似於2012-01-30 11:31:00。我想選擇所有記錄,其中$ date和srt_date_sortie具有相同的日期,但不考慮時間。希望有人能幫忙。不同的日期格式的PHP選擇查詢

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

這裏下面我如何建立$日期:

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

預先感謝您的答覆。乾杯。馬克

回答

2

對於你應該避免對派生列像​​比較,因爲這將阻止任何索引被使用性能方面的原因。這否定了已發佈的一些解決方案。

查詢對你DATETIME領域的最有效的方法是使用範圍查詢,如:

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

除非你需要一切從表中的行的SELECT *可能是低效的,只列出行是你需要檢索。

+1

謝謝詹姆斯的幫助和解釋。 – Marc 2012-02-08 10:44:22

0

你可以在MySQL中使用格式化日期DATE_FORMAT

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

你好點擊。不幸的是你的建議不起作用。無論如何非常感謝您的幫助。乾杯。 – Marc 2012-02-08 10:21:55

2

與更改您的查詢的關鍵字之間的日期開始時間和結束時間。

0
mysql_query("SELECT * FROM sorties WHERE srt_date_sortie LIKE '%2012-01-30%'"); 
0
$date=date('Y-m-d H:i:s', strtotime($test)); 

使用它

+0

不工作。不管怎麼說,還是要謝謝你。乾杯。 – Marc 2012-02-08 10:34:33

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