2015-11-07 3 views
0

таблицей видеоMySQL выберите строки между заданным интервалом

id | title | time 
------------------------ 
1 | o'najr | 1406332800 

Я хочу, чтобы выбрать строки, которые между интервалом 6 месяцев от заданного времени. Оба новее или старше

Так что если время запроса для ex. 1446076800 будут выбраны все строки, которые на 6 месяцев старше или на 6 месяцев ниже этого.

time находится в формате UNIX TIMESTAMP.

Итак, если видео загружено в октябре 2015 года, будут выбраны все видеоролики, загруженные в апреле 2015 года и новые. Также будут отобраны все видео с октября 2015 года по апрель 2016 года.

6 months <---- || query time || ----> 6 months

Это мой запрос, но он не работает. Это как структура не рабочий запрос.

:time - это переменная, которая будет использоваться для запроса.

select `title` 
from `videos` 
where DATE_FORMAT(FROM_UNIXTIME(time - :time)) > INTERVAL 6 MONTH 
     or 
     DATE_FORMAT(FROM_UNIXTIME(:time - time)) < INTERVAL 6 MONTH 
+1

Почему вы пометить его с 'php'? – trincot

+1

Посмотрите на синтаксис 'BETWEEN', т. Е.' WHERE x BETWEEN y и z' – RiggsFolly

ответ

1

Ваш запрос не имеет смысла. Вы пытаетесь сравнить определенную дату с временным интервалом.

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

SELECT title FROM videos 
WHERE FROM_UNIXTIME(time) BETWEEN 
    DATE_SUB(FROM_UNIXTIME(:time), INTERVAL 6 MONTH) 
    AND DATE_ADD(FROM_UNIXTIME(:time), INTERVAL 6 MONTH) 
+3

Хорошо. Может быть, даже лучше использовать «МЕЖДУ»? И я думаю, вам нужно называть 'FROM_UNIXTIME' также на' time' – trincot

+1

Хорошие предложения. Я починю это. – mkasberg

+1

Кроме того, 'DATE_FORMAT' не требуется при использовании' FROM_UNIXTIME'. – mkasberg

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