在mysql中获取最近的下一个日期记录

时间:2013-11-26 05:50:35

标签: php mysql sql date

我有一个活动表。我今天使用。SELECT * FROM `special_banner_tbl` WHERE `SPLBANNER_pubsdate` = current_date 发生事件。如果今天没有活动,它必须显示未来的一天记录更接近当前日期。
如果表格如..
------------------
future_date
--------- ---------
30-11-2013
30-11-2013
2013年2月12日
2013年3月12日03
-12-2013
----------------------
它会显示下一个最近的日期 30-11-2013 < / strong>记录..喜欢。

SELECT * FROM `special_banner_tbl` WHERE `SPLBANNER_pubsdate` = nest_nearest_date_records

只有最近的一个日期记录没有任何限制。如
--------------- --------------
事件未来日期
---- ----------- ----------------
30日活动30-11-2013
30日活动30-11-2013
------------------------------

6 个答案:

答案 0 :(得分: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
    )

答案 1 :(得分:0)

您需要或SPLBANNER_pubsdate&gt;未来日期的当前日期和SPLBANNER_pubsdate ASC的订单,因此如果没有找到当前日期的事件,如果找到则会有未来事件,然后列出当前事件

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

答案 2 :(得分:0)

实际上你要做的就是利用今天和未来之间的差异。然后你必须通过这个差异来提升你的数据。

希望我帮忙!

答案 3 :(得分:0)

试试这个:

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

答案 4 :(得分:0)

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

您可以通过以上查询找到确切的下一个日期记录。

答案 5 :(得分: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