MySQL存儲毫秒數(shù)據(jù)的方法
有相當一部分剛接觸到 MySQL 的朋友都遇到這樣一個相同的問題,就是關于毫秒的存儲與顯示。由于MySQL數(shù)據(jù)類型中只提供了DATETIME, TIMESTAMP, TIME, DATE, YEAR這幾種時間類型,而且DATETIME 以及 TIMESTAMP 的最小單位是秒,沒有存儲毫秒級別的函數(shù)。 不過MySQL卻能識別時間中的毫秒部分。而且我們有多種方式可以獲得毫秒的部分,比如函數(shù):microsecond 等。
我這里舉一個簡單的例子,來存儲秒之前和之后的部分。
對于把時間字段作為主鍵的應用,我們可以建立以下的表來作相應的轉(zhuǎn)化:
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)
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
mysql> set @a = convert(concat(now(),'.222009'),datetime); Query OK, 0 rows affected (0.00 sec)
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
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)
或者是用VARCHAR來存儲所有的時間字段, 又或者是存儲一個HASH來保證性能!
方法很多,就看你的應用怎么用合理了。
相關文章
mysql 數(shù)據(jù)庫備份的多種實現(xiàn)方式總結
這篇文章主要介紹了mysql 數(shù)據(jù)庫備份的多種實現(xiàn)方式,總結分析了MySQL數(shù)據(jù)庫備份的常見語句、使用方法及操作注意事項,需要的朋友可以參考下2020-02-02window10中mysql8.0修改端口port不生效的解決方法
mysql配置文件默認位置,端口號等信息需要在my.ini文件中修改,若修改安裝位置的my-default文件文件或新建my.ini文件是不生效的,本文主要介紹了window10中mysql8.0修改端口port不生效的解決方法,感興趣的可以了解一下2023-11-11將mysql腳本轉(zhuǎn)化為oracle腳本的攻略與細節(jié)點
前段時間公司項目數(shù)據(jù)庫需要從mysql轉(zhuǎn)為oracle,所以需要修改下原有的mysql腳本,這篇文章主要給大家介紹了關于將mysql腳本轉(zhuǎn)化為oracle腳本的攻略與細節(jié)點,需要的朋友可以參考下2023-09-09