2013-11-11 4 views
0

У меня есть следующая таблица (даты), где столбцы указаны в формате даты, как определено.MySQL Выберите дату диапазона между двумя столбцами

id Column1    Column2  
1 [2013-07-12 12:00:00] [2013-07-14 12:00:00] 

Я хочу, чтобы извлечь диапазон как это (даты между column1 и COLUMN2):

2013-07-12 12:00:00

2013-07-13 12:00 : 00

2013-07-14 12:00:00

Как сделать это возможным?

+0

Что вы хотите результат запроса SQL быть? Линия '$ result' не имеет никакого смысла. Ожидаете ли вы 3 столбца для этой 1 записи или это строка? – AgRizzo

+0

Я ожидаю 3 culumns, 3 даты между 07/12 и 07/14. Надеюсь, я поняла. – user2959620

+0

Динамически создавать столбцы практически невозможно. Но теперь похоже, что вы изменили свой вопрос таким образом, что он подразумевает, что вам нужны строки для каждого значения (что, хотя и проще, чем столбцы, все еще сложно). Вы можете сосредоточиться на центральном решении PHP. – AgRizzo

ответ

0

Вот PHP-скрипт, который будет принимать две даты, возвращенные из вашей таблицы, каждый день разделяться, а затем помещать этот день в массив. Затем даты могут быть легко доступны изнутри массива.

<?php 
    $date_1 = date("Y-m-d g:i:s", strtotime('2013-06-27 12:00:00')); 
    $date_2 = date("Y-m-d g:i:s", strtotime('2013-07-03 12:00:00')); 
    $results = array($date_1); 
    $i = $date_1; 
    while ($i <= $date_2) { 
     $i = date("Y-m-d g:i:s", strtotime("+1 day", strtotime($i))); 
     array_push($results, $i); 
     echo $i; 
    } 
    print_r($results); 
?> 

$date_1 и $date_2 будут возвращены значения из таблицы. Обязательно назначьте самую раннюю дату $date_1 или скрипт будет работать вечно.

+0

это именно то, что я искал, чтобы достичь своего масштаба. Большое спасибо. – user2959620

+0

Добро пожаловать! Рад, что смог помочь. – zsaat14

0

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html

Может быть, сделать выбор *, где DateDiff между двумя колоннами меньше или равно предполагаемым диапазоном?

+0

этот датифик выглядит более или менее тем, что я ищу .. дай мне время, чтобы дать вам обратную связь. спасибо .. – user2959620

3

Попробуйте это:

SELECT * FROM DateTable 
WHERE DATEDIFF('2013-07-14',dateFROM)>=0 
AND DATEDIFF('2013-07-14', dateTO) <= 0 

Смотрите мой SQLFiddle Demo

+0

Я оценил вашу помощь, это поможет – user2959620

+0

Нет проблем @ user2959620. Счастливое кодирование и благословение Бога. – Edper

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