MySQL儲存毫秒資料的方法

2022-10-06 01:48:07 字數 1415 閱讀 2796

有相當一部分剛接觸到 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 in

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 i程式設計客棧nto 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儲存毫秒資料的方法

本文位址:

mysql毫秒數引發的問題

起因 最近同事在做定時打卡的東西,遇到乙個詭異的問題,端只是傳了乙個開始時間跟打卡週期,剩下的打卡時間都是由服務端自己生成的,顯示的截止時間有的變成23 59 59.有時候又變成了 00 00 00,沒有找到原因,讓幫忙找一下原因,之前沒有遇到過這種情況,一時來了興趣。通過編寫單元測試,過程並沒有出...

mysql毫秒數引發的問題

起因 最近同事在做定時打卡的東西,遇到乙個詭異的問題,端只是傳了乙個開始時間跟打卡週期,剩下的打卡時間都是由服務端自己生成的,顯示的截止時間有的變成23 59 59.有時候又變成了 00 00 00,沒有找到原因,讓幫忙找一下原因,之前沒有遇到過這種情況,一時來了興趣。通過編寫單元測試,過程並沒有出...

mysql 獲取系統時間(毫秒數)

sql語句 select time to sec now now current timestamp replace unix timestamp current timestamp 3 執行結果 優化版 最後乙個,就是你想要的系統毫秒數了 獲取已知日期的時間毫秒數 select unix time...