Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

mysql select closest date from today

Tags:

sql

mysql

I have below table

    date
-----------------------
1. 2017-01-02 20:59:00
2. 2017-01-04 10:00:00
3. 2017-01-04 11:00:00
4. 2017-01-09 17:20:00

Q1: Assuming today is 2017-01-03, how can i select the above date to get the result of 2 and 3 ?

Q2: assume today is 2017-01-05, get the result of 4 ?

like image 538
sxio Avatar asked Jan 02 '17 18:01

sxio


3 Answers

Try this:

select `date`
from your_table
where date(`date`) = (select min(date(`date`))
    from your_table
    where date(`date`) > date(now())
);
like image 79
Gurwinder Singh Avatar answered Oct 19 '22 05:10

Gurwinder Singh


Try this:

SELECT *
FROM Table 
WHERE datecol > NOW() 
AND datecol < CURDATE() + INTERVAL 1 DAY
LIMIT 1
like image 32
Rob Sedgwick Avatar answered Oct 19 '22 06:10

Rob Sedgwick


Q1 Answer:

SELECT
    *
FROM
    closest_date_table
WHERE
    date(`date`) = (
        SELECT
            min(date(`date`))
        FROM
            closest_date_table
        WHERE
            date(`date`) > date('2017-01-03')
    );

Q2 Answer:

SELECT
    *
FROM
    closest_date_table
WHERE
    date(`date`) = (
        SELECT
            min(date(`date`))
        FROM
            closest_date_table
        WHERE
            date(`date`) > date('2017-01-05')
    );

LIVE SQL FIDDLE DEMO

like image 1
Faisal Avatar answered Oct 19 '22 05:10

Faisal