2015-11-14 38 views
0

我想比较一个名为“fecha_registro”一栏两个日期,此栏为varchar(100),我想他这个日期代码比较:比较与MySQL和PHP中的varchar日期

<?php 

$host = "localhost"; 
$user = "root"; 
$pass = ""; 
$db = "gimnasio"; 

mysql_connect($host, $user, $pass); 
mysql_select_db($db); 

$from = "2010-02-06"; 
$to = "2015-11-08"; 

$consulta = mysql_query("SELECT id_cliente FROM clientes WHERE fecha_registro BETWEEN '$from' AND '$to'"); 
$cantidad = mysql_num_rows($consulta); 

echo $cantidad; 

?> 

的问题是,你永远也找不到任何记录时,多个记录满足该模式

的“客户”表的结构是这样的:

enter image description here

个而记录是这样的:

enter image description here

请,为解决这个问题?

+1

转换的'varchar'到'date'场尝试。 https://dev.mysql.com/doc/refman/5.7/en/datetime.html也许你可以使用它,http://dev.mysql.com/doc/refman/5.5/en/date-and-time -phunctions.html#function_unix-timestamp和'strtotime'在PHP中。尽管我会转换列类型,它将为您节省时间。 – chris85

+0

我同意chris85。 – Jah

+0

每当您在“DATE”或“DATETIME”以外的字段类型中存储日期时,DBA会杀死一只小猫。 – Sammitch

回答

1

试试这个

SELECT id_cliente FROM clientes WHERE 
DATE_FORMAT(STR_TO_DATE(fecha_registro, '%Y-%c-%e'), '%Y-%m-%d') 
BETWEEN '$from' AND '$to' 
0

您可以通过这种方式

SELECT id_cliente FROM clientes WHERE 
STR_TO_DATE(fecha_registro, '%Y-%m-%d') 
BETWEEN '$from' AND '$to'