在MySQL中使用带有变量的LIKE

时间:2012-08-22 09:03:29

标签: php mysql

好的,所以我想在我的SQL语句中使用LIKE运算符来查询数据库。

我正在看一个有日期和时间的字段,就像这样

2012-04-27 12:00:00

我只想比较字符串的第一部分,只是比较日期位,所以我使用了LIKE,但我没有得到任何匹配。

这是代码

$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还不够......我还能在这里添加什么?

3 个答案:

答案 0 :(得分:1)

如果您只想比较字符串的第一部分,只是日期,那么为什么不使用MySQL DATE()

  

提取日期或日期时间表达式expr的日期部分

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

答案 1 :(得分:1)

对于日期比较,您可以使用。 尝试使用类似的东西:

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

答案 2 :(得分:0)

请尝试

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

如果你想获取记录,其中离开值的起始字符串包含此日期,那么你必须使用Like $str%

谢谢