2013-11-26 3 views
0

как я могу получить запись по дате между определенными столбцамикак я могу получить запись, используя дату между определенными столбцами

Пример.

У меня есть значение даты, 14-11-2013. Я хочу, чтобы запись в моем табуляции имела это значение между startdate и end_date. Я пробовал между заявлением и больше/меньше, но без успеха. Возможно ли это?

Это мой Tabel: time_periode .. когда я выбираю *

id start_time start_date end_time end_date payment_t. payment_d file_ready_d file_ready_t 
11 1385337600 25-11-2013 1386460800 08-12-2013 1387238400 17-12-2013 1386892800 13-12-2013 
10 1384128000 11-11-2013 1385251200 24-11-2013 1386028800 03-12-2013 1385683200 29-11-2013 
9 1382918400 28-10-2013 1384041600 10-11-2013 1384819200 19-11-2013 1384473600 15-11-2013 
8 1381708800 14-10-2013 1382832000 27-10-2013 1383609600 05-11-2013 1383264000 01-11-2013 

Желаемая выход

id start_time start_date end_time end_date payment_t. payment_d file_ready_d file_ready_t 
10 1384128000 11-11-2013 1385251200 24-11-2013 1386028800 03-12-2013 1385683200 29-11-2013 
+0

Даты должны храниться с использованием типа данных даты – Strawberry

ответ

1

Если ваша дата $time_period, а затем использовать BETWEEN:

SELECT * FROM t WHERE $time_period BETWEEN start_date AND end_date 

В качестве альтернативы вы можете использовать двойной -comparison:

SELECT 
    * 
FROM 
    t 
WHERE 
    $time_period>start_date 
    AND 
    end_date>$time_period 

Однако, вы должны использовать правильный формат для даты, как это описано в MySQL DATE странице руководства. Если это невозможно, то есть STR_TO_DATE() функция:

SELECT 
    * 
FROM 
    t 
WHERE 
    STR_TO_DATE($time_period, '%d-%m-%Y') 
    BETWEEN STR_TO_DATE(start_date, '%d-%m-%Y') 
    AND 
    BETWEEN STR_TO_DATE(end_date, '%d-%m-%Y') 
+0

Я согласен через 8 минут. Спасибо за ваш правильный ответ: D – Zaz

1
SELECT ... 
FROM ... 
WHERE '2013-11-14' BETWEEN start_date AND end_date 

Обратите внимание на формат гггг-мм-дд от даты. Это родной формат даты mysql, и это то, что позволяет этот запрос работать. Похоже, что ваши поля start_date и end_date являются, вероятно, просто varchars, и в этом случае этот запрос не будет выполнен, потому что 08-12-2013 недействителен для даты mysql. Вы всегда должны хранить даты/время в собственных форматах даты и времени и полях.

+0

Благодарим вас за правильный ответ: D – Zaz

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