'How do I get Timestamp minus 6 weeks in MySQL?

I have a field named timestamp. This is the last time a member was logged in. I am looking to include a where clause in a query for something like

WHERE timestamp > todays date - 6 weeks

How would I do this? I am trying to only include users that have logged in in the last 6 weeks.

Thanks



Solution 1:[1]

I find this syntax more readable than date_sub, but either way works.

WHERE timestamp >= NOW() - INTERVAL 6 WEEK

If you want to go by "Today" (midnight) instead "now" (current time), you would use this

WHERE timestamp >= DATE(NOW()) - INTERVAL 6 WEEK

Solution 2:[2]

where column>=date_sub(now(), interval 6 week)

Solution 3:[3]

This link demonstrates how you might acquire a timestamp of yesterday using the format DATE_ADD(CURDATE(), INTERVAL -1 DAY), therefore your query would probably be:

WHERE timestamp > DATE_ADD(CURDATE(), INTERVAL -42 DAY)

Solution 4:[4]

You can use between and now():

select somevalue 
from yourtable
where yourtimestamp between now() - interval 1 day and now()

Solution 5:[5]

for TIMESTAMP there is a TIMESTAMPADD() function

SELECT TIMESTAMPADD(WEEK, -6, CURRENT_TIMESTAMP)

this will return the timestemp of 6 weeks ago

or in the case like the question

SELECT * FROM users
WHERE lastlogin > TIMESTAMPADD(WEEK, -6, CURRENT_TIMESTAMP)

Solution 6:[6]

Any luck yet. Have you tried:

>= DATE_SUB(NOW(), INTERVAL 6 WEEK) 

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1
Solution 2 ajreal
Solution 3 Neil
Solution 4 Eric Leschinski
Solution 5
Solution 6 rd42