MySQL 時間日期型別

2022-04-10 01:43:17 字數 2142 閱讀 5643

表示時間值的日期和時間型別為datetime、date、timestamp、time和year

每個時間型別有乙個有效值範圍和乙個"零"值,當指定不合法的mysql不能表示的值時使用"零"值。

timestamp型別有專有的自動更新特性。

型別大小(位元組)

範圍格式

用途date

31000-01-01/9999-12-31

yyyy-mm-dd

日期值time

3'-838:59:59'/'838:59:59'

hh:mm:ss

時間值或持續時間

year

11901/2155

yyyy

年份值datetime

81000-01-01 00:00:00/9999-12-31 23:59:59

yyyy-mm-dd hh:mm:ss

混合日期和時間值

timestamp

4結束時間是第 2147483647 秒,北京時間 2038-1-19 11:14:07,格林尼治時間 2023年1月19日 凌晨 03:14:07

yyyy-mm-dd hh:mm:ss

混合日期和時間值,時間戳

二、timestamp和datetime比較

相同點:

兩者都可用來表示yyyy-mm-dd hh:mm:ss 型別的日期。

不同點:

他們的的儲存方式,大小(位元組),表示的範圍不同。

timestamp,它把客戶端插入的時間從當前時區轉化為utc(世界標準時間)進行儲存。查詢時,將其又轉化為客戶端當前時區進行返回。

datetime,不做任何改變,基本上是原樣輸入和輸出。

總結:

timestamp和datetime 都可用來表示yyyy-mm-dd hh:mm:ss 型別的日期, 除了儲存方式和儲存範圍以及大小不一樣,沒有太大區別。但對於跨時區的業務,timestamp更為合適。

三、時間與時間戳之間轉換:

有些應用生成的時間戳是比這個多出三位,是毫秒表示,如果要轉換,需要先將最後三位去掉(標準的10位數字,如果是13位的話可以以除以1000的方式),否則返回null。

#將時間轉換為時間戳unix_timestamp

select unix_timestamp('

2019-10-24 20:16:07

'); #1571919367

#將時間戳轉換為時間from_unixtime

select from_unixtime(1571919367); #2019-10

-2420:16:07

#now

select unix_timestamp(now()); #1571919421

select from_unixtime(1571919421); #2019-10

-2420:17:01

四、按時間日期查詢

#根據年月日查資料

select

*from tb_test where date_format(update_time, '

%y-%m-%d

')='

2019-02-22';

#根據年月查資料

select

*from tb_test where date_format(update_time, '

%y-%m

')='

2021-01';

#根據年查資料

select

*from tb_test where date_format(update_time, '

%y')=

'2022';

#根據日期區間查詢資料,並排序

select

*from tb_test where date_format(update_time, '

%y') between

'2019

'and

'2023

'order

by update_time asc;

MySQL時間日期型別

mysql中的 時間型別 日期和時間型別 位元組 最小值 最大值date 4 1000 01 01 9999 12 31 datetime 8 1000 01 01 00 00 00 9999 12 31 23 59 59 timestamp 4 19700101080001 2038 年的某個時刻...

MySQL中的時間日期型別

mysql中共有5種時間日期型別 型別名稱 時間格式 取值範圍 mysql5.6.4之前儲存需求 位元組 mysql5.6.4開始儲存需求 位元組 year yyyy 1901 2155 11 date yyyy mm dd 1000 01 01 9999 12 333 time hh mm ss ...

07 MySQL 時間日期型別

日期型別 系統使用三個位元組來儲存資料,對應的格式為 yyyy mm dd,能表示的範圍是從1000 01 01 到9999 12 12,初始值為0000 00 00 時間型別 能夠表示某個指定的時間,但是系統同樣是提供3個位元組來儲存,對應的格式為 hh ii ss,但是mysql中的time型別...