Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

How to construct negative time less than 1 hour using MAKETIME function of MySQL?

From MySQL dev site –

MAKETIME function –

  • MAKETIME(hour,minute,second)

Returns a time value calculated from the hour, minute, and second arguments.

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

The second argument can have a fractional part.

mysql> SELECT MAKETIME(12,15,30);
        -> '12:15:30'

Upon testing on my machine –

mysql> SELECT MAKETIME(1, 0, 0) AS output;
+----------+
| output   |
+----------+
| 01:00:00 |
+----------+
mysql> SELECT MAKETIME(1, 30, 0) AS output;
+----------+
| output   |
+----------+
| 01:30:00 |
+----------+

Now, trying to constructing negative time –

mysql> SELECT MAKETIME(-1, 0, 0) AS output;
+-----------+
| output    |
+-----------+
| -01:00:00 |
+-----------+
mysql> SELECT MAKETIME(-1, 30, 0) AS output;
+-----------+
| output    |
+-----------+
| -01:30:00 |
+-----------+

Now I try to construct the time -00:30:00 using MAKETIME function. I try –

mysql> SELECT MAKETIME(-0, 30, 0) AS output;
+----------+
| output   |
+----------+
| 00:30:00 |
+----------+

The result is not as intended. Then I try –

mysql> SELECT MAKETIME(0, -30, 0) AS output;
+--------+
| output |
+--------+
| NULL   |
+--------+

I am getting a null output here.

I can’t figure out a proper way to do it.

Can I possibly do it?

>Solution :

This appears to be a gap in maketime’s functionality; the mariadb documentation outright says "If minute or second are out of the range 0 to 60, NULL is returned." which seems to be the behavior of all mysql and mariadb versions I can test.

I suggest you use sec_to_time instead:

sec_to_time((0)*3600 + (-30)*60 + (0))
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading