A Brief Analysis on the Time Carrying Problem of MySQL

A Brief Analysis on the Time Carrying Problem of MySQL

The default time type (datetime and timestamp) in MySQL has a precision of seconds. If the time value is set with a precision less than a second, it will be rounded off, which may cause the value in the database to be one second more than the original value. In other words, records that originally belonged to today may be recorded tomorrow.

Below is an example that demonstrates how time is rounded. First create a table:

CREATE TABLE test_time (
 time_sec datetime,
 time_millis datetime(3),
 time_micros datetime(6),
 stamp_sec timestamp,
 stamp_millis timestamp(3),
 stamp_micros timestamp(6)
);

Some readers may not know that datetime and timestamp can be defined with precision. The precision value is 0~6, indicating how many decimal places are retained. The default value is 0. Obviously, retaining 3 digits can be regarded as milliseconds precision, and retaining 6 digits can be regarded as microseconds precision.

Then we insert a record:

INSERT INTO test_time
( time_sec, time_millis, time_micros, 
 stamp_sec, stamp_millis, stamp_micros )
VALUES(
 '2019-11-30 12:34:56.987654', 
 '2019-11-30 12:34:56.987654', 
 '2019-11-30 12:34:56.987654',
 '2019-11-30 12:34:56.987654', 
 '2019-11-30 12:34:56.987654', 
 '2019-11-30 12:34:56.987654'
);

Then do another select * from test_time query and you will see the following results:

time_sec |time_millis |time_micros |stamp_sec |stamp_millis |stamp_micros |
---------------------|-----------------------|--------------------------|---------------------|-----------------------|--------------------------|
2019-11-30 12:34:57.0|2019-11-30 12:34:56.988|2019-11-30 12:34:56.987654|2019-11-30 12:34:57.0|2019-11-30 12:34:56.988|2019-11-30 12:34:56.987654|

You can see that the second values ​​of time_sec and stamp_sec in the database are rounded up, and the millisecond values ​​of time_millis and stamp_millis are rounded up.

It can be seen that there are two ways to avoid such errors:

  • Use datetime(6) or timestamp(6) when defining fields;
  • The field is defined without precision, but the millisecond value is truncated before the time is stored in the database.

Related Documents:

MySQL 5.6 Reference: Fractional Seconds in Time Values

Summarize

The above is the full content of this article. I hope that the content of this article will have certain reference learning value for your study or work. Thank you for your support of 123WORDPRESS.COM.

You may also be interested in:
  • Summary of MySQL date data type and time type usage
  • Detailed explanation of TIMESTAMP usage in MySQL
  • MySql query time period method
  • MySQL date and time format conversion implementation statement
  • mysql calculate time difference function
  • FROM_UNIXTIME Format MYSQL timestamp function
  • Mysql date time DATE_FORMAT (date, format)
  • Functions and methods for converting dates and timestamps in MySQL
  • How to write various SQL statements in MySQL to get time data for one day, one week, and one month
  • MySQL timestamp automatic update time sharing

<<:  Example of Vue's implementation of the underlying code for simulating responsive principles

>>:  How to solve the Docker container startup failure

Recommend

Use tomcat to set shared lib to share the same jar

As more and more projects are deployed, more and ...

What is Nginx load balancing and how to configure it

What is Load Balancing Load balancing is mainly a...

MySQL 5.7.17 latest installation tutorial with pictures and text

mysql-5.7.17-winx64 is the latest version of MySQ...

Detailed explanation of the integer data type tinyint in MySQL

Table of contents 1.1Tinyint Type Description 1.2...

Detailed steps to build the TypeScript environment and deploy it to VSCode

Table of contents TypeScript environment construc...

How to implement distributed transactions in MySQL XA

Table of contents Preface XA Protocol How to impl...

MySQL initialization password operation under Mac

A simple record of the database startup problems ...

About the problem of offline installation of Docker package on CentOS 8.4

The virtual machine used is CentOS 8.4, which sim...

How to load the camera in HTML

Effect diagram: Overall effect: Video loading: Ph...

Sample code for deploying Spring-boot project with Docker

1. Basic Spring-boot Quick Start 1.1 Quick start ...

A brief discussion on the problem of forgotten mysql password and login error

If you forget your MySQL login password, the solu...

JS, CSS style reference writing

CSS: 1. <link type="text/css" href=&q...

Detailed explanation of how to cleanly uninstall Docker

First, the server environment information: Reason...