Нужно сделать выборку допустим за период между 2008-07-23 22:00:00 - 2008-07-24 01:00:00 По понятным причинам данный запрос не пашет. Как составить правельный запрос [sql]SELECT date,time FROM `calls` where (`date` >= '2008-07-23' and time >= '22:00:00') and (`date` <= '2008-07-24' and time <= '01:00:00')[/sql] PS в поиске конкретного ответа пока не нашел
Блин да когда ж кончится хранение даты и времени в формате dd-m-yyyy h:i:s. Вот скажи мне, какая религия не позволяет тебе хранить все это барахло в unix_timestamp? И сравнивать было бы удобнее...
А что в этом плохого? MySQL нормально работает с такими полями и сравнивает их корректно, а не как строки.
[sql]SELECT DATE_FORMAT(STR_TO_DATE(concat(`aa`,' ',`bb`),'%Y-%m-%d %H:%i:%s'),'%H %k %I %r %T %S %w') as dt FROM `ttt`[/sql] может такой изврат поможет ? сообственно нужно тока STR_TO_DATE(concat(`aa`,' ',`bb`),'%Y-%m-%d %H:%i:%s')
Наверно я что то не так понял. [sql]SELECT STR_TO_DATE(concat(`date`,' ',`time`),'%Y-%m-%d %H:%i:%s') as `dt` FROM `calls` WHERE (`dt`>= '2008-07-23 22:00:00' AND `dt`<= '2008-07-24 01:00:00'[/sql] [sql]SELECT DATE_FORMAT(STR_TO_DATE(concat(`date`,' ',`time`),'%Y-%m-%d %H:%i:%s'),'%H %k %I %r %T %S %w') as `dt` FROM `calls` WHERE (`dt`>= '2008-07-23 22:00:00' AND `dt`<= '2008-07-24 01:00:00' [/sql] На оба запроса ответ Данный формат таблицы мне был очень удобен при постаении графиков и при других запросах. Переделывать уже готовое не хочу. В голове радилась идея. Если получится то код выложу
Вот такой вот код PHP: $pattern = '|(([\d]{4})-([\d]{2})-([\d]{2})) ([\d]{2}:[\d]{2})|'; preg_match($pattern, $_POST['raport_calend1'], $matches1); preg_match($pattern, $_POST['raport_calend2'], $matches2); $int1 = $matches1[2].$matches1[3].$matches1[4]; $date1 = $matches1[1]; $time1 = $matches1[5]; $int2 = $matches2[2].$matches2[3].$matches2[4]; $date2 = $matches2[1]; $time2 = $matches2[5]; $int = $int2-$int1; if($int >= 0){ $sql = "SELECT date,time FROM `calls` where `date` >= '$date1' and `time` >= '$time1' union "; if($int > 1){ $sql .= "SELECT date,time FROM `calls` where `date` > '$date1' and `date` < '$date2' union "; } $sql .= "SELECT date,time FROM `calls` where `date` <= '$date2' and `time` <= '$time2' limit 50000"; } echo $sql; При данных пост получаем запрос [sql]SELECT date,time FROM `calls` where `date` >= '2008-07-22' and `time` >= '13:20' union SELECT date,time FROM `calls` where `date` > '2008-07-22' and `date` < '2008-07-24' union SELECT date,time FROM `calls` where `date` <= '2008-07-24' and `time` <= '13:20'[/sql] При данных пост получаем запрос [sql]SELECT date,time FROM `calls` where `date` >= '2008-07-23' and `time` >= '13:20' union SELECT date,time FROM `calls` where `date` <= '2008-07-24' and `time` <= '13:20' limit 50000[/sql] PS парсить все равно надо было. Так как данны вводятся с календаря на JS PSS может кому пригодится. Пользуйтесь
собственно так и недолжно было сработать ... колонки созданые в селекте немогут участвовать в его условии ... тоесть надо как-то так :[sql]SELECT STR_TO_DATE(concat(`date`,' ',`time`),'%Y-%m-%d %H:%i:%s') as `dt` FROM `calls` WHERE (STR_TO_DATE(concat(`date`,' ',`time`),'%Y-%m-%d %H:%i:%s')>= '2008-07-23 22:00:00' AND STR_TO_DATE(concat(`date`,' ',`time`),'%Y-%m-%d %H:%i:%s')<= '2008-07-24 01:00:00'[/sql] но правильней наверное будет всетаки добавить поле и проапдейтить его благо это просто .. например [sql]UPDATE `calls` SET `New_coll_datetime`=STR_TO_DATE(concat(`date`,' ',`time`),'%Y-%m-%d %H:%i:%s')[/sql]