MySQL Timestamp vs Datetime What & When To Use

Howdy!

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 ?

Author

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');