Solved

Delete Range of dates in MySQL

Posted on 2014-01-06
7
343 Views
Last Modified: 2014-01-06
I have searched the internet and copied in at least 7 solutions that are advertised around, but I simply cannot get it to work.  

Problem:  I have 100,000 rows in a database - all with a date field populated.  I want to delete all rows if the date is older than 14 days.  Among many attempts, this was my last, but the SQL is bad.  Any thoughts for a legit solution that actually works :)

DELETE * FROM hours WHERE ADJAPPLYDTM < DATE_SUB( 2013-12-30, INTERVAL 14 DAY )

I would paste all the others I tried, but it wouldn't do any good at this point since they didn't work and I don't remember them.
0
Comment
Question by:weklica
  • 4
  • 3
7 Comments
 

Author Comment

by:weklica
ID: 39759742
Update:  just to be clear what my goal is:

I want to run the script each day and it will delete anything older that 14 days based on the ADJAPPLYDTM column.  the whole row goes based on that one field's value.
0
 
LVL 59

Expert Comment

by:Kevin Cross
ID: 39759754
What are some sample values of the ADJAPPLYDTM field, or more importantly can you verify the data type of the column?
0
 

Author Comment

by:weklica
ID: 39759762
Yes, it is datetime as type of column.

Here is a format example:  2013-11-24 00:00:00
0
Zoho SalesIQ

Hassle-free live chat software re-imagined for business growth. 2 users, always free.

 
LVL 59

Accepted Solution

by:
Kevin Cross earned 500 total points
ID: 39759769
Here is an example:
DELETE
FROM `hours`
WHERE ADJAPPLYDTM < DATE_SUB(CURDATE(), INTERVAL 14 DAY)
;

Open in new window


The code should delete rows with a date less than '2013-12-23' if run today.  If you want to control the date, substitute CURDATE() for literal like '2013-12-30', leveraging STR_TO_DATE() if necessary.
0
 

Author Closing Comment

by:weklica
ID: 39759784
PERFECT!  This is what I needed.  The CURDATE will make things easier and I must have been forgetting the semicolon accidentally.  THANKS MUCH.
0
 

Author Comment

by:weklica
ID: 39759812
One other question if you don't mind:

What would it look like to delete just the last two days as well?  I will run it as a second SQL query obviously, but last two days as well would be nice to clean up....
0
 
LVL 59

Expert Comment

by:Kevin Cross
ID: 39759834
Do you mean you want to keep records between '2013-12-23' and '2014-01-04', removing everything else?  Remember the "INTERVAL n DAY" portion of the code controls how you shift the original date, which in your case is today.  If last two days refers to today and yesterday, then you really want "INTERVAL 1 DAY" whereas to grab Saturday (two days ago) as well you need "INTERVAL 2 DAY".

Anyway, the query would be:
DELETE
FROM `hours`
WHERE ADJAPPLYDTM >= DATE_SUB(CURDATE(), INTERVAL 1 DAY)
;

Open in new window


Therefore, you can combine the queries into one:
DELETE
FROM `hours`
WHERE (ADJAPPLYDTM < DATE_SUB(CURDATE(), INTERVAL 14 DAY)
OR ADJAPPLYDTM >= DATE_SUB(CURDATE(), INTERVAL 1 DAY))
;

Open in new window


If I did not understand you question correctly, you may want to consider created a related question.  It will notify me as well as bring in additional Experts.

Regards,

Kevin
0

Featured Post

Backup Your Microsoft Windows Server®

Backup all your Microsoft Windows Server – on-premises, in remote locations, in private and hybrid clouds. Your entire Windows Server will be backed up in one easy step with patented, block-level disk imaging. We achieve RTOs (recovery time objectives) as low as 15 seconds.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Load balancing is the method of dividing the total amount of work performed by one computer between two or more computers. Its aim is to get more work done in the same amount of time, ensuring that all the users get served faster.
Password hashing is better than message digests or encryption, and you should be using it instead of message digests or encryption.  Find out why and how in this article, which supplements the original article on PHP Client Registration, Login, Logo…
This is a video describing the growing solar energy use in Utah. This is a topic that greatly interests me and so I decided to produce a video about it.
With Secure Portal Encryption, the recipient is sent a link to their email address directing them to the email laundry delivery page. From there, the recipient will be required to enter a user name and password to enter the page. Once the recipient …

939 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now