MySQL中關於日期 時間的資料型別和函式

2021-06-18 09:21:06 字數 2301 閱讀 6006

一、日期相關的資料型別

1、datetime

占用8位元組,既顯示了日期,又顯示了時間。其表示的日期範圍為「1000-01-01 00:00:00」到「9999-12-31 23:59:59」

2、date

占用3個位元組,可顯示的日期範圍「1000-01-01」到「9999-12-31」

3、timestamp

和datetime顯示結果一樣,都是固定的「yyyy-mm-dd 00:00:00「。不同的是timestamp占用4個位元組,顯示範圍為」1970-01-01 00:00:00」utc到「2038-01-19 03:14:07「utc。其實際儲存的內容為」1970-01-01 00:00:00」到當前時間的毫秒數。在新建表時,列為timestamp型別可以設定乙個預設值,而datetime不行。在更新表時,可以設定timestamp型別的列自動更新時間為當前時間 如下

新建表

create table score (

id int(10) not null primary key,

bz2 timestamp default current_timestamp

)插入一條資料,不對timestamp型別插入

insert into score (id) values (1)

執行結果如下:timestamp型別自動賦預設值,我們設定的預設值為current_timestamp

更新表

create table score (

id int(10) not null primary key,

bz2 timestamp on update current_timestamp

)insert into score (id,bz2) values (1,current_timestamp)

結果如下

執行update語句 : update score set id=2

可以看到bz2的時間自動變為更新表的當前時間

4、year

year型別占用1位元組,並且可以在定義的時候指定顯示的寬度為year(4)或者year(2)。year(4)顯示的範圍為1901-2070,year(2)的顯示範圍為1970-2070,該設定下,00-69代表2000-2069,代表最近的年份

5、time

佔3個位元組,顯示範圍為」-838:59:59「-」838:59:59「。為什麼time的型別可以大於23,可以為負值,這是因為time不僅可以用來儲存一天中的時間,還可以儲存時間的間隔。

二、日期相關的函式

1、now(),current_timestamp(),sysdate()

執行sql語句:select now(),current_timestamp(),sysdate(),結果如下:

這樣,看不出三個有什麼區別,然後執行下面的sql語句:

select sleep(2), now(),current_timestamp(),sysdate();其中,sleep(2)代表執行等待2秒

結果如下:

可以看出,now(),current_timestamp()這兩個函式結果相同,它們等價,指的是sql開始執行的時間

而sysdate()的結果晚了兩秒,代表執行該函式時候的當前時間。

2、時間加減的函式

直接進行now()+1會返回給你乙個數字而不是日期,如下:select now()+1

那麼如何在now的基礎上加上一天或者減去一天,這就要用到date_add(date, interval 1 day),date_sub(date, interval 1 day)函式。

用法如下:select now() as today,

date_add(now(), interval 1 day) as tomorrow,

date_sub(now(), interval 1 day) as yestoday

結果如下:

在函式中使用的是day作為間隔時間,也可以使用year,month,week,hour,minute,second等

3、date_format()函式

其作用是按照使用者需求格式化列印日期

select date_format(now(),'%y%m%d')

其中%y代表4位的year,%y代表2位的year;%m代表2位的month;%d代表2位的day。其中,%y,%m,%d之間可以新增任何的字元已達到自己目標。上述格式輸出20130915,如果設為』%y:%m:%d',則輸出2013:09:15,如果設為為』%y/%m/%d',則輸出2013/09/15

mysql 關於日期時間的字段型別

mysql有5種表示時間值的日期和時間型別,分別為 date,time,year,datetime,timestamp。timestamp型別有專有的自動更新特性,timestamp型別有專有的自動更新特性,timestamp型別有專有的自動更新特性,型別大小 位元組 範圍格式 用途date 310...

mysql 關於日期時間的字段型別

mysql有5種表示時間值的日期和時間型別,分別為 date,time,year,datetime,timestamp。timestamp型別有專有的自動更新特性,timestamp型別有專有的自動更新特性,timestamp型別有專有的自動更新特性,型別大小 位元組 範圍格式 用途date 310...

Mysql中的日期與時間

mysql中有5種表示日期和時間的型別 下面一一介紹 tear型別 用乙個位元組來表示年份,範圍是1901 2155,形式是yyyy。可以用now current date,current time來得到。time型別 三個位元組來表示時間,hh mm ss,注意time範圍是 838 838,不是...