Heim > Datenbank > MySQL-Tutorial > MySQL存储毫秒数据的方法_MySQL

MySQL存储毫秒数据的方法_MySQL

WBOY
Freigeben: 2016-06-01 13:07:33
Original
1036 Leute haben es durchsucht

有相当一部分刚接触到 MySQL 的朋友都遇到这样一个相同的问题,就是关于毫秒的存储与显示。由于MySQL数据类型中只提供了DATETIME, TIMESTAMP, TIME, DATE, YEAR这几种时间类型,而且DATETIME 以及 TIMESTAMP 的最小单位是秒,没有存储毫秒级别的函数。 不过MySQL却能识别时间中的毫秒部分。而且我们有多种方式可以获得毫秒的部分,比如函数:microsecond 等。

我这里举一个简单的例子,来存储秒之前和之后的部分。
对于把时间字段作为主键的应用,我们可以建立以下的表来作相应的转化:

mysql> create table mysql_microsecond ( log_time_prefix timestamp not null default 0, log_time_suffix mediumint not null default 0) engine innnodb;Query OK, 0 rows affected, 2 warnings (0.00 sec)
Nach dem Login kopieren
mysql> alter table mysql_microsecond add primary key (log_time_prefix, log_time_suffix);Query OK, 0 rows affected (0.01 sec)Records: 0 Duplicates: 0 Warnings: 0
Nach dem Login kopieren
mysql> set @a = convert(concat(now(),'.222009'),datetime);Query OK, 0 rows affected (0.00 sec)
Nach dem Login kopieren
mysql> insert into mysql_microsecond select date_format(@a,'%Y-%m-%d %H-%i-%s'),date_format(@a,'%f');Query OK, 1 row affected (0.00 sec)Records: 1 Duplicates: 0 Warnings: 0
Nach dem Login kopieren
mysql> select * from mysql_microsecond;+---------------------+-----------------+| log_time_prefix   | log_time_suffix |+---------------------+-----------------+| 2009-08-11 17:47:02 |     222009 |+---------------------+-----------------+1 row in set (0.00 sec)
Nach dem Login kopieren


或者是用VARCHAR来存储所有的时间字段, 又或者是存储一个HASH来保证性能!
方法很多,就看你的应用怎么用合理了。

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage