MySQL 時間日期型別和相關函式

2021-08-07 22:11:44 字數 4311 閱讀 6220

mysql中的日期和時間型別

型別位元組

最小值最大值

零值datetime

81000-01-01 00:00:00

9999-12-31 23:59:59

0000-00-00 00:00:00

date

41000-01-01

9999-12-31

0000-00-00

timestamp

419700101080001

2023年某時刻

00000000000000

time

3-838:59:59

838:59:59

00:00:00

year

11901

2155

0000

timestamp返回的格式為"yyyy-mm-dd hh:mm:ss",寬度固定為19個字元,要想獲得數字值,可以 select current_timestamp+0 的方式:

year有2位(5.5.27之前的版本有)或4位格式的年,預設是4位格式,在4位格式中,允許的值1901 ~ 2155和0000,在2位格式中,允許的值是70 ~ 69,表示1970 ~ 2069,year返回的格式為「yyyy」。

對於以上所有時間和日期型別,若想插入當前時間對應的值,可以用current_timestamp、now():

mysql中的日期時間函式

函式功能

格式curdate()

返回當前日期

2016-10-29

curtime()

返回當前時間

11:20:34

now()

返回當前的日期和時間

2016-10-29 11:21:02

unix_timestamp(date)

unix_timestamp()

返回日期date的unix時間戳

執行:select unix_timestamp()

輸出:1477711822

from_unixtime(unix_timestamp)

返回unix時間戳的日期值

執行:select from_unixtime(1477670400)

輸出:2016-10-29 11:30:22

week(date)

返回日期date為一年中的第幾周

執行:select week(curdate())

輸出:43

year(date)

返回日期date的年份

執行: select year(curdate())

輸出:2016

hour(time)

返回time的小時值

執行:select hour(curtime());

輸出:11

minute(time)

返回time的分鐘值

執行:select minute(curtime())

輸出:36

monthname(date)

返回date的月份名

執行:select monthname(curdate())

輸出october

date_format(date, format)

返回按字串format格式化日期date值

執行:select date_format(now(), '%y年%c月%e日 %t時%i分%s秒');

輸出:2023年10月29日 11:44:57時44分57秒

date_add(date,interval expr type)

返回乙個日期值加上乙個時間間隔的時間值

執行:select now() current,date_add(now(),interval 1 day) after_one_day;

輸出:2016-10-29 11:52:10 | 2016-10-30 11:52:10

datediff(expr1,expr2)

返回起始時間expr1和結束時間expr2之間的天數

執行:select datediff('2016-10-20',now());

輸出:-9

執行:select datediff(now(),'2016-10-20')

輸出:9

unix_timestamp(date)和 from_unixtime(unix_timestamp)是互逆作用的.

date_format(date,format)函式:

format字串中的格式符:

mysql中的日期和時間格式

格式符格式說明

%s和%s

兩位數字形式的秒(00, 01, ... , 59)

%i兩位數字的分(00, 01, ... , 59)

%h兩位數字形式的小時,24小時(00,01,...,23)

%h和%i

兩位數字形式的小時,24小時(01,02,...,12)

%k數字形式的小時,24小時(0,1,2,...,23)

%l數字形式的小時,12小時(1,2,...,12)

%t24小時的時間形式(hh:mm:ss)

%r12小時的時間形式(hh:mm:ssam或hh:mm:sspm)

%pam或pm

%w一周中每一天的名稱(sunday,monday,...,saturday)

%a一周中每一天的名稱縮寫(sun,mon,...,sat)

%d兩位數字表示月中的天數(00,01,...,31)

%e數字表示月中天數(1,2,...,31)

%d英文本尾表示月中的天數(1st,2nd,3rd,...)

%w數字形式表示週中的天數(0=sunday,1=monday...)

%j以3位數字表示年中天數(001,002,...,366)

%u年的周(0,1...,52),其中sunday位周第一天

%u年的周(0,1...,52),其中monday位周第一天

%m月名(january,february,...,december)

%b縮寫的月名(jan,feb,...dec)

%m兩位數字表示的月份(01,02,...,12)

%c數字表示的月份(1,2,...,12)

%y4位數字表示的年份

%y兩位數字表示的年份

%%轉義

例項:

date_add(date,interval expr type):其中interval時間隔型別關鍵字,expr是乙個表示式,對應後面的型別,type時間隔型別,其值如下表

mysql日期間隔型別

表示式型別

描述格式

hour

小時hh

minute分mm

second秒ss

year年yy

month月mm

day日

ddyear_month

年和月yy-mm

day_hour

日和小時

dd hh

day_minute

日和分鐘

dd hh:mm

day_second

日和秒dd hh:mm:ss

hour_minute

小時和分

hh:mm

hour_second

小時和秒

hh:ss

minute_second

分鐘和秒

mysql中datetime能儲存的日期範圍從2023年到2023年,精度為秒,儲存時把日期和時間封裝為yyyymmddhhmmss的格式的整數中,與時區無關,

使用8個位元組儲存。

timestamp型別能儲存的日期範圍從2023年1月1日到2023年12月31日,它儲存的是時間戳,只用了4個位元組,所以範圍比datetime小很多,

timestamp是和時區相關的。預設情況下,如果插入時沒有指定第乙個timestamp列的值,那麼mysql會預設給設定當前時間。在更新一行記錄

時,也會更新第乙個timestamp列的值為當前時間(除非指定了該列的值)

mysql時間日期 MySql 時間和日期函式

下面是mysql各種內建時間函式 1.curdate current date 用於獲取當前的日期。2.curtime current time 用於獲取現在的時鐘時間。3.now current timestamp localtime sysdate 四類函式可以獲取當前的日期和時鐘時間 4.da...

MySQL 時間日期型別

表示時間值的日期和時間型別為datetime date timestamp time和year。每個時間型別有乙個有效值範圍和乙個 零 值,當指定不合法的mysql不能表示的值時使用 零 值。timestamp型別有專有的自動更新特性。型別大小 位元組 範圍格式 用途date 31000 01 01...

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 年的某個時刻...