Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Mysql Compare two datetime fields

I want to compare two dates with time, I want all the results from tbl where date1 > date2

Select * From temp where mydate > '2009-06-29 04:00:44'; 

but it is just comparing dates not time. it is giving me all the result set of today's date

'2009-06-29 11:08:57' '2009-06-29 11:14:35' '2009-06-29 11:12:38' '2009-06-29 11:37:48' '2009-06-29 11:52:17' '2009-06-29 12:12:50' '2009-06-29 12:13:38' '2009-06-29 12:19:24' '2009-06-29 12:27:25' '2009-06-29 12:28:49' '2009-06-29 12:35:54' '2009-06-29 12:36:54' '2009-06-29 12:49:57' '2009-06-29 12:58:04' '2009-06-29 04:13:20' '2009-06-29 04:56:19' '2009-06-29 05:00:23' '2009-06-29 05:04:26' '2009-06-29 05:08:17' '2009-06-29 05:26:57' '2009-06-29 05:29:06' '2009-06-29 05:32:11' '2009-06-29 05:52:07' 

Thanks in advance!

like image 519
MySQL DBA Avatar asked Jun 29 '09 12:06

MySQL DBA


People also ask

How can I compare two date fields in MySQL?

MySQL has the ability to compare two different dates written as a string expression. When you need to compare dates between a date column and an arbitrary date, you can use the DATE() function to extract the date part from your column and compare it with a string that represents your desired date.

Can we compare two timestamps in SQL?

To calculate the difference between the timestamps in MySQL, use the TIMESTAMPDIFF(unit, start, end) function. The unit argument can be MICROSECOND , SECOND , MINUTE , HOUR , DAY , WEEK , MONTH , QUARTER , or YEAR . To get the difference in seconds as we have done here, choose SECOND .


2 Answers

The query you want to show as an example is:

SELECT * FROM temp WHERE mydate > '2009-06-29 16:00:44'; 

04:00:00 is 4AM, so all the results you're displaying come after that, which is correct.

If you want to show everything after 4PM, you need to use the correct (24hr) notation in your query.

To make things a bit clearer, try this:

SELECT mydate, DATE_FORMAT(mydate, '%r') FROM temp; 

That will show you the date, and its 12hr time.

like image 142
Jeremy Smyth Avatar answered Oct 06 '22 23:10

Jeremy Smyth


You can use the following SQL to compare both date and time -

Select * From temp where mydate > STR_TO_DATE('2009-06-29 04:00:44', '%Y-%m-%d %H:%i:%s'); 

Attached mysql output when I used same SQL on same kind of table and field that you mentioned in the problem-

enter image description here

It should work perfect.

like image 38
Anjuman Avatar answered Oct 06 '22 23:10

Anjuman