2013-11-26 2 views
0

У меня есть таблица событий. Я показываю события на сегодняшний день.
SELECT * FROM `special_banner_tbl` WHERE `SPLBANNER_pubsdate` = current_date

, если на сегодняшний день событий нет, он должен будет отображать будущую дневную запись, которая ближе к текущей дате.
если таблица как ..
------------------
future_date
------------------
30- 11-2013
30-11-2013
02-12-2013
03-12-2013
03-12-2013
----------------------
будет отображаться следующая ближайшая дата: 30-11-2013 записей .. нравится.

SELECT * FROM `special_banner_tbl` WHERE `SPLBANNER_pubsdate` = nest_nearest_date_recordsполучить ближайшие ближайшие записи даты в mysql

только один ближайшее время записи даты без каких-либо предела. как
--------------- --------------
события                   будущие даты-
---- ----------- ----------------
30-я-события     30-11-2013
30-я-события     30-11-2013
------------------------------

+0

ребята спасибо за ваши ответы , но мне нужно только 31-11-2-13 записей, которые ближе, чем сегодня. И я не знаю, что его предел, а также даты 02-12-2013 и дальнейшие будущие даты. –

+0

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

+1

Я действительно беспокоюсь, чтобы узнать, как ваш столбец базы данных принял дату с '31' дней для 'November'. *** '31-11-2013' ***. Моя база данных ударила меня с помощью «ERROR 1292 (22007)» –

ответ

0

Вам нужно или SPLBANNER_pubsdate> current_date для будущих дат и порядка от SPLBANNER_pubsdate ASC, поэтому, если никакие события не найдены для текущей даты, это wil л у будущих событий, если найдены, то текущие события перечислены первые

SELECT * FROM `special_banner_tbl` WHERE `SPLBANNER_pubsdate` = current_date 
OR `SPLBANNER_pubsdate` > current_date ORDER BY `SPLBANNER_pubsdate` ASC 
LIMIT 0 , 30 
+0

Что произойдет, если существует только 5 текущих записей даты, а остальное - будущие даты. –

+0

. 5 событий текущей даты будут перечислены первыми, а 25 будущих событий также будут присутствовать, но после текущих событий –

+0

OP хочет перечислить будущие даты только тогда, когда нет текущих записи даты доступны –

0

На самом деле то, что вам нужно сделать, это использовать разницу между сегодняшним и будущим. Тогда вам придется заказывать свои данные по этой разнице по возрастанию.

Надеюсь, я помог!

+0

нет, я не могу заказать какие-либо записи. Мне нужны только следующие записи событий событий в будущем .. –

0

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

SELECT 
    * 
FROM 
    `special_banner_tbl` 
ORDER BY 
    ABS(DATEDIFF(NOW(), `SPLBANNER_pubsdate`)) 
LIMIT 10 
2

Во всяком случае я хотел бы написать два отдельных запроса для этого случая, но это также работает отлично:

SELECT 
    * 
FROM special_banner_tbl 
WHERE SPLBANNER_pubsdate = CURRENT_DATE 

UNION ALL 
SELECT 
    * 
FROM special_banner_tbl 
WHERE 
    (SELECT COUNT(*) 
    FROM special_banner_tbl 
    WHERE SPLBANNER_pubsdate=CURRENT_DATE) = 0 
    AND 
    SPLBANNER_pubsdate = (
     SELECT MIN(SPLBANNER_pubsdate) 
     FROM special_banner_tbl 
     WHERE SPLBANNER_pubsdate > CURRENT_DATE 
     ORDER BY SPLBANNER_pubsdate 
     LIMIT 1 
    ) 
+0

hey george, спасибо, много. Работает потрясающе .. спасибо много. –

+1

+1 @GeorgeGarchagudashvili. Хорошая мысль. –

+0

Спасибо @ Ravinder высоко оценили. –

0
SELECT * FROM `jsproduct_company` 
WHERE future_date > NOW() 
LIMIT 1; 

Вы можете найти точную следующую запись даты с помощью вышеупомянутого запроса ,

0
SELECT * 
FROM `special_banner_tbl` 
WHERE `SPLBANNER_pubsdate` >= CURDATE() 
ORDERBY `SPLBANNER_pubsdate` asc 
LIMIT 1 

Если поле SPLBANNER_pubsdate будет содержать полные значений даты и времени (вместо значений даты), вы должны изменить положение о where немного, чтобы выделить дату:

SELECT * 
FROM `special_banner_tbl` 
WHERE DATE(`SPLBANNER_pubsdate`) >= CURDATE() 
ORDERBY `SPLBANNER_pubsdate` asc 
LIMIT 1 
Смежные вопросы