SELECT all records that are 30 days old

后端 未结 4 690
盖世英雄少女心
盖世英雄少女心 2020-12-11 22:57

I need to SELECT all records that are 30 days old. I have the code below but it\'s not working. In updatestatus I have dates like 12/26/2011. I create a 30 day old date like

相关标签:
4条回答
  • 2020-12-11 23:04

    If the datatype of updatestatus is date:

    SELECT * 
    FROM people 
    WHERE updatestatus <= '2012-01-01'
    

    or:

    SELECT * 
    FROM people 
    WHERE updatestatus <= CURRENT_DATE() - INTERVAL 1 MONTH
    

    If the datatype is datetime or timestamp and you want to check the time part, too:

    SELECT * 
    FROM people 
    WHERE updatestatus <= NOW() - INTERVAL 1 MONTH
    

    You can put an exact datetime instead of the NOW() - INTERVAL 1 MONTH. The correct way depends on how you are storing the datetimes or timestamps (does the Perl code or MySQL creates them in the first place?).

    You could also put - INTERVAL 30 DAY which yield slightly different results.

    0 讨论(0)
  • 2020-12-11 23:04

    If the time column is in timestamp then use below query.(use from_unixtime function)

    SELECT wd.* FROM `watchdog` as wd
    WHERE  from_unixtime(wd.timestamp) <= NOW() - INTERVAL 1 MONTH
    
    0 讨论(0)
  • 2020-12-11 23:19

    You can try this way. In SQL, there is dateadd function and I think there should be similar function in MySQL.

    select *
    from Table
    where str_to_date between dateadd(day,-30,getdate()) and getdate()
    

    It retrieve records between current date and past 30 days. You need to adjust for time. If you don't count time, you need to remove timestamp.

    0 讨论(0)
  • 2020-12-11 23:21

    This is what I used. Very simple

    $sth = $dbh->prepare(qq(SELECT * FROM people WHERE updatestatus + INTERVAL 30 DAY <=     NOW() )) or die $DBI::errstr;
    
    0 讨论(0)
提交回复
热议问题