MySQL Timestamp vs Datetime : What & When To Use ?

Image by Undraw.co
Image by Undraw.co
Image Description
Koussay
  • Published : Thu, Oct 26, 2023
  • 1 minute 33 seconds read

Hello & Welcome. In 99.99% of the cases, developers deal with dates in their web applications. In MySQL, there are two types of datetime, there is timestamp and there is datetime, so this will pose the question. What to use and when to use each one of them ?

Timestamp

According to MySQL documentation, Timestamp data type is used to store date and time parts in it. But the range is from 1970-01-01 00:00:01 UTC to 2038-01-19 03:14:07 UTC. Why that date you ask ? Well it's because the UNIX system store the datetime in a signed 32-bit integer. So when that date will come. It will cause an overflow. You can read more about it here

Datetime

Now Datetime is also used to store date and time parts together. But the key difference is the range. The range of Datetime data type is from 1000-01-01 00:00:00 to 9999-12-31 23:59:59 . Which is a long interval if you think about it.

When to use what ?

Now comes the question, when to use what ?

The way I see it, if you have to deal with some data withing the future, you must use Datetime data type. For example, if you have a subscription model in your application, one edge case can be a customer can buy 20 years of subscription. If you use the default timestamp data type, that will produce an error. So your solution is to use Datetime data type.

What about the use of Timestamp then you ask ? Well, it can be used to store events datetimes, as they occur momentarily.

All depends on your needs and your application needs after all.

Using Datetime & Timestamp In Laravel

Both of data types are supported in Laravel. You can follow the following example of migration to use each one.

$table->timestamp('timestamp');
$table->dateTime('datetime');

Credits

Post cover by Undraw.co


Tags :

Laravel