国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

MySQL 中 datetime 和 timestamp 的區(qū)別與選擇

jas0n / 1799人閱讀

摘要:中常用的兩種時(shí)間儲(chǔ)存類(lèi)型分別是和。下面就談?wù)勊麄兊膮^(qū)別和怎么選擇。時(shí)區(qū)只占個(gè)字節(jié),而且是以的格式儲(chǔ)存,它會(huì)自動(dòng)檢索當(dāng)前時(shí)區(qū)并進(jìn)行轉(zhuǎn)換。如果只是想表示年日期時(shí)間的還可以使用,它們分別占據(jù)字節(jié),而就是它們的集合。

MySQL 中常用的兩種時(shí)間儲(chǔ)存類(lèi)型分別是datetimetimestamp。如何在它們之間選擇是建表時(shí)必要的考慮。下面就談?wù)勊麄兊膮^(qū)別和怎么選擇。

1 區(qū)別 1.1 占用空間
類(lèi)型 占據(jù)字節(jié) 表示形式
datetime 8 字節(jié) yyyy-mm-dd hh:mm:ss
timestamp 4 字節(jié) yyyy-mm-dd hh:mm:ss
1.2 表示范圍
類(lèi)型 表示范圍
datetime "1000-01-01 00:00:00.000000" to "9999-12-31 23:59:59.999999"
timestamp "1970-01-01 00:00:01.000000" to "2038-01-19 03:14:07.999999"

timestamp翻譯為漢語(yǔ)即"時(shí)間戳",它是當(dāng)前時(shí)間到 Unix元年(1970 年 1 月 1 日 0 時(shí) 0 分 0 秒)的秒數(shù)。對(duì)于某些時(shí)間的計(jì)算,如果是以 datetime 的形式會(huì)比較困難,假如我是 1994-1-20 06:06:06 出生,現(xiàn)在的時(shí)間是 2016-10-1 20:04:50 ,那么要計(jì)算我活了多少秒鐘用 datetime 還需要函數(shù)進(jìn)行轉(zhuǎn)換,但是 timestamp 直接相減就行。

1.3 時(shí)區(qū)

timestamp 只占 4 個(gè)字節(jié),而且是以utc的格式儲(chǔ)存, 它會(huì)自動(dòng)檢索當(dāng)前時(shí)區(qū)并進(jìn)行轉(zhuǎn)換。

datetime以 8 個(gè)字節(jié)儲(chǔ)存,不會(huì)進(jìn)行時(shí)區(qū)的檢索.

也就是說(shuō),對(duì)于timestamp來(lái)說(shuō),如果儲(chǔ)存時(shí)的時(shí)區(qū)和檢索時(shí)的時(shí)區(qū)不一樣,那么拿出來(lái)的數(shù)據(jù)也不一樣。對(duì)于datetime來(lái)說(shuō),存什么拿到的就是什么。

還有一個(gè)區(qū)別就是如果存進(jìn)去的是NULLtimestamp會(huì)自動(dòng)儲(chǔ)存當(dāng)前時(shí)間,而 datetime會(huì)儲(chǔ)存 NULL

2 測(cè)試

我們新建一個(gè)表

插入數(shù)據(jù)

查看數(shù)據(jù),可以看到存進(jìn)去的是NULLtimestamp會(huì)自動(dòng)儲(chǔ)存當(dāng)前時(shí)間,而 datetime會(huì)儲(chǔ)存NULL

把時(shí)區(qū)修改為東 9 區(qū),再查看數(shù)據(jù),會(huì)會(huì)發(fā)現(xiàn) timestampdatetime 多一小時(shí)

如果插入的是無(wú)效的呢?假如插入的是時(shí)間戳

結(jié)果是0000-00-00 00:00:00,根據(jù)官方的解釋是插入的是無(wú)效的話會(huì)轉(zhuǎn)為 0000-00-00 00:00:00,而時(shí)間戳并不是MySQL有效的時(shí)間格式。

那么什么形式的可以插入呢,下面列舉三種

//下面都是 MySQL 允許的形式,MySQL 會(huì)自動(dòng)處理
2016-10-01 20:48:59
2016#10#01 20/48/59
20161001204859
3 選擇

如果在時(shí)間上要超過(guò)Linux時(shí)間的,或者服務(wù)器時(shí)區(qū)不一樣的就建議選擇 datetime

如果是想要使用自動(dòng)插入時(shí)間或者自動(dòng)更新時(shí)間功能的,可以使用timestamp

如果只是想表示年、日期、時(shí)間的還可以使用 yeardatetime,它們分別占據(jù) 1、3、3 字節(jié),而datetime就是它們的集合。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/17866.html

相關(guān)文章

  • 一針見(jiàn)血,mysql時(shí)間日期類(lèi)型字符串類(lèi)型選擇

    摘要:和數(shù)據(jù)類(lèi)型的用法在存儲(chǔ)字符串時(shí),可以使用或者類(lèi)型相同點(diǎn)和都可以存儲(chǔ)變長(zhǎng)字符串且字符串長(zhǎng)度上限為字節(jié)不同點(diǎn)速度快,不存在空間浪費(fèi),不處理尾部空格,上限為字節(jié),但是有存儲(chǔ)長(zhǎng)度實(shí)際字節(jié)最大可用。 點(diǎn)贊再看,養(yǎng)成贊美的習(xí)慣,微信搜一搜【香菜聊游戲】關(guān)注我。 目錄 1、DATETIME、TIME...

    不知名網(wǎng)友 評(píng)論0 收藏0
  • 關(guān)于“時(shí)間”一次探索

    摘要:示例指定了也就是零時(shí)區(qū),顯示的時(shí)間會(huì)加上本地時(shí)區(qū)的偏移小時(shí)。其實(shí)就是上面顯示時(shí)間時(shí)使用的形式除了能表示基本信息,還可以表示星期,但是一點(diǎn)也不容易讀,不建議使用。 原文對(duì) ISO 8601 時(shí)間格式中 T 和 Z 的表述有一些錯(cuò)誤,我已經(jīng)對(duì)原文進(jìn)行了一些修訂,抱歉給大家造成誤解。 最近使用 sequelize 過(guò)程中發(fā)現(xiàn)一個(gè)奇怪的問(wèn)題,將某個(gè)時(shí)間插入到表中后,通過(guò) sequelize 查...

    fuyi501 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<