我有一个活动表。我今天使用。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
------------------------------
答案 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