TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2)

專注于為中小企業(yè)提供成都網(wǎng)站建設(shè)、做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)運(yùn)河免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了超過千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
返回日期或日期時(shí)間表達(dá)式datetime_expr1 和datetime_expr2the 之間的整數(shù)差。
其結(jié)果的單位由interval 參數(shù)給出。該參數(shù)必須是以下值的其中一個(gè):
FRAC_SECOND 表示間隔是毫秒
SECOND? 秒
MINUTE? 分鐘
HOUR? 小時(shí)
DAY? 天
WEEK? 星期
MONTH? 月
QUARTER? 季度
YEAR? 年
mysql?SELECT?TIMESTAMPDIFF(SECOND,?'2012-12-21',?CURRENT_TIMESTAMP())?AS?`Second`;
+----------+
|?Second???|
+----------+
|?53880812?|
+----------+
1?row?in?set?(0.00?sec)
經(jīng)常有人問及:在 MySQL 中如何獲得毫秒?于是就寫篇日志總結(jié)下。
MySQL 較新的版本中(MySQL 6.0.5),也還沒有產(chǎn)生微秒的函數(shù),now() 只能精確到秒。 MySQL 中也沒有存儲(chǔ)帶有毫秒、微秒的日期時(shí)間類型。
但,奇怪的是 MySQL 已經(jīng)有抽取(extract)微秒的函數(shù)。例如:
select microsecond('12:00:00.123456'); -- 123456
select microsecond('1997-12-31 23:59:59.000010'); -- 10
select extract(microsecond from '12:00:00.123456'); -- 123456
select extract(microsecond from '1997-12-31 23:59:59.000010'); -- 10
select date_format('1997-12-31 23:59:59.000010', '%f'); -- 000010
盡管如此,想在 MySQL 獲得毫秒、微秒還是要在應(yīng)用層程序中想辦法。假如在應(yīng)用程序中獲得包含微秒的時(shí)間:1997-12-31 23:59:59.000010,在 MySQL 存放時(shí),可以設(shè)計(jì)兩個(gè)字段:c1 datetime, c2 mediumint,分別存放日期和微秒。為什么不采用 char 來存儲(chǔ)呢?用 char 類型需要 26 bytes,而 datetime + mediumint 只有 11(8+3) 字節(jié)。
毫秒、微秒名詞解釋:
毫秒:millisecond -- 千分之一秒
微秒:microsecond -- 一百萬分之一秒
1 秒 = 1000 毫秒;1 毫秒 = 1000 微秒
有相當(dāng)一部分剛接觸到
MySQL
的朋友都遇到這樣一個(gè)相同的問題,就是關(guān)于毫秒的存儲(chǔ)與顯示。由于MySQL數(shù)據(jù)類型中只提供了DATETIME,
TIMESTAMP,
TIME,
DATE,
YEAR這幾種時(shí)間類型,而且DATETIME
以及
TIMESTAMP
的最小單位是秒,沒有存儲(chǔ)毫秒級(jí)別的函數(shù)。
不過MySQL卻能識(shí)別時(shí)間中的毫秒部分。而且我們有多種方式可以獲得毫秒的部分,比如函數(shù):microsecond
等。
我這里舉一個(gè)簡單的例子,來存儲(chǔ)秒之前和之后的部分。
對(duì)于把時(shí)間字段作為主鍵的應(yīng)用,我們可以建立以下的表來作相應(yīng)的轉(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,
rows
affected,
2
warnings
(0.00
sec)
mysql
alter
table
mysql_microsecond
add
primary
key
(log_time_prefix,
log_time_suffix);
Query
OK,
rows
affected
(0.01
sec)
Records:
Duplicates:
Warnings:
mysql
set
@a
=
convert(concat(now(),'.222009'),datetime);
Query
OK,
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:
Warnings:
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來存儲(chǔ)所有的時(shí)間字段,
又或者是存儲(chǔ)一個(gè)HASH來保證性能!
方法很多,就看你的應(yīng)用怎么用合理了。
網(wǎng)頁標(biāo)題:mysql毫秒怎么表示 mysql 毫秒格式
本文URL:http://www.js-pz168.com/article4/ddipooe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、Google、外貿(mào)網(wǎng)站建設(shè)、動(dòng)態(tài)網(wǎng)站、網(wǎng)站設(shè)計(jì)、營銷型網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)