2012-08-22 60 views
0

好吧,我想在我的SQL語句中使用LIKE運算符來匹配數據庫查詢。在MySQL中使用LIKE與變量

我在尋找一個其中有一個日期和時間的字段,這樣

2012-04-27 12:00:00 

我只是想比較字符串,只是日期位的第一部分,所以我用喜歡,但我沒有得到任何比賽。

下面的代碼

$colname_cruises = "-1"; 
if (isset($_GET['id'])) { 
$colname_cruises = str_replace('-', ' ', $_GET['id']); 
} 

$colname_date = "-1"; 
if (isset($_GET['date'])) { 
$colname_date = $_GET['date']; 
} 

$query_cruises = sprintf("SELECT * FROM cruises WHERE title = %s AND departs LIKE %s", GetSQLValueString($colname_cruises, "text"), GetSQLValueString($colname_date, "text")); 
$cruises = mysql_query($query_cruises, $connection) or die(mysql_error()); 
$row_cruises = mysql_fetch_assoc($cruises); 
$totalRows_cruises = mysql_num_rows($cruises); 

我敢肯定只是做了LIKE%S是不夠的......我還能這裏補充的嗎?

+0

的%(你還需要什麼等)得到通過的sprintf函數的參數取代,對不對? – devOp

+0

你保存日期和時間的列的數據類型是什麼 – diEcho

+0

datatype是datetime,我剛剛修改了GetSQLValueString爲止...仍然是一個空查詢返回 – Rich

回答

1

,如果你只想字符串的第一部分,只是日期比較,然後你爲什麼不使用MySQL DATE()

提取日期或日期時間表達式的日期部分EXPR

SELECT DATE('2003-12-31 01:02:03'); 
    -> '2003-12-31' 
+1

完美,我使用了「SELECT * FROM cruises WHERE title =%s AND DATE(departs)LIKE%s」的作品,謝謝大家/ #diEcho – Rich

1

對於日期比較,您可以在兩者之間使用。 嘗試使用類似的東西:

departs between <date> and DATE_ADD(<date>,INTERVAL 1 DAY) 
0

請嘗試

"SELECT * FROM cruises WHERE title = '".$colname_cruises."' AND departs LIKE '".$colname_date."%'"; 

如果你想去的地方出發值開始串含有本日期,那麼你必須使用Like $str%獲取記錄。

感謝