2013-01-08 86 views
2

我想知道为什么这个where子句在MySql中不起作用?我有runDate的列设置为数据类型“日期”和日期会出现在以下格式:SQL在MySQL中的where子句按日期

<?php 
$con = mysql_connect("***","***",""); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

mysql_select_db("ArnoldsPizzaShop", $con); 




$result = mysql_query("SELECT * FROM runinfo WHERE runDate = 2013-01-06"); 


while($row = mysql_fetch_array($result)) 
    { 
echo $row['route'] ; 
} 


mysql_close($con); 
?> 
+2

你有没有试着在约会把引号? 'WHERE runDate ='2013-01-06'' – jonhopkins

+1

好吧,再一次:'mysql'-扩展已过时,不再维护,并将被标记为已弃用。改为使用'PDO_MYSQL'或'MySQLi'。 http://php.net/mysql-connect – KingCrunch

+0

你得到了什么错误? –

回答

7

您需要周围的日期值单引号:

SELECT * 
FROM runinfo 
WHERE runDate = '2013-01-06' 

所以你的代码会是:

mysql_query("SELECT * FROM runinfo WHERE runDate = '2013-01-06'"); 

如果您runDate列还包含了时间,那么你可能想使用:

SELECT * 
FROM runinfo 
WHERE Date(runDate) = '2013-01-06' 

甚至:

SELECT * 
FROM runinfo 
WHERE runDate between '2013-01-06' and '2013-01-07' 
+0

你好,我尝试过,它仍然无法正常工作。它的奇怪,因为如果我匹配列ID它工作正常 –

+0

@MattJameson当你说不起作用,你会得到一个错误?你能详细说明吗?你确定有数据符合日期吗?它是否也有时间存储它? – Taryn

+0

没有引号,日期被看作是减法,例如, 2013减1减6 = 2006. –