2010-12-16 4 views
1

Мой скрипт отлично работает для всех продаж, но пропускает все продажи на 15-м.PHP/MySQL Дата поиска

для MySQL строк на период выглядит следующим образом: ID: 10 START: 2010-12-01 END: 2010-12-15

Строки MySQL для продаж выглядит следующим образом: ДАТА: 2010 -12-15 20:40:26

$period_info=mysql_fetch_array(mysql_query("SELECT start,end FROM period WHERE id='$period' LIMIT 1")); 
$start=$period_info["start"]; 
$end=$period_info["end"]; 

$total_sales=mysql_num_rows(mysql_query("SELECT * FROM sales WHERE seller='$seller' AND date BETWEEN '$start' AND '$end'")); 

И идеи?

ответ

2

Это связано с тем, что MySQL использует 00:00:00 как время для типа DATE. Я думаю, вы можете использовать:

"SELECT * FROM sales WHERE seller='$seller' AND (CAST date AS DATE) BETWEEN '$start' AND '$end'".

+0

Спасибо за вашу помощь! – R3dBu77 2010-12-16 08:02:43

1

сравнить только дату часть DateTime, и игнорировать часть времени:

WHERE DATE(`date`) BETWEEN '$start' AND '$end' 
+0

Удивительный! Теперь я могу перестать вытягивать волосы. :) Благодаря! – R3dBu77 2010-12-16 07:59:39

1

Для достижения наилучших результатов при использовании BETWEEN с указанием даты или времени значения, используйте CAST() для явного преобразования значения в желаемое тип данных. Примеры. Если вы сравниваете DATETIME с двумя значениями DATE, преобразуйте значения DATE в значения DATETIME. Если вы используете строчную константу, такую ​​как «2001-1-1» в сравнении с DATE, введите строку в DATE.

+0

Благодарим за помощь! – R3dBu77 2010-12-16 08:01:45

Смежные вопросы