日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql date类型计算_MySQL date类型

發(fā)布時間:2023/12/15 数据库 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql date类型计算_MySQL date类型 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在本教程中,我們將向您介紹MySQL DATE數(shù)據(jù)類型,并演示一些有用的日期函數(shù)來有效處理日期數(shù)據(jù)。

MySQL DATE數(shù)據(jù)類型簡介

MySQL DATE是用于管理日期值的五種時間數(shù)據(jù)類型之一。 MySQL使用yyyy-mm-dd格式存儲日期值。此格式是固定的,不可能更改它。

例如,您可能更喜歡使用mm-dd-yyyy格式,但是遺憾,不能直接使用。 一個代替的辦法:遵循標(biāo)準(zhǔn)日期格式,并使用DATE_FORMAT函數(shù)按所需格式來格式化日期。

MySQL使用3個字節(jié)來存儲DATE值。DATE值的范圍為1000-01-01到9999-12-31。 如果要存儲超出此范圍的日期值,則需要使用非時間數(shù)據(jù)類型,例如整數(shù),例如使用三列,分別存儲年,月和日的數(shù)據(jù)。還需要創(chuàng)建存儲函數(shù)來模擬MySQL提供的內(nèi)置日期函數(shù),這是不推薦的。

當(dāng)嚴(yán)格模式被禁用時,MySQL將任何無效日期(例如2015-02-30)轉(zhuǎn)換為零日期值0000-00-00。

MySQL日期值為兩位數(shù)年份

MySQL使用四位數(shù)字存儲日期值的年份。 如果您使用兩位數(shù)的年份值,MySQL仍會接受以下規(guī)則:

年份值在00-69范圍內(nèi)轉(zhuǎn)換為2000-2069。

70-99的年值被轉(zhuǎn)換為1970 - 1999年。

但是,具有兩位數(shù)字的日期值是不明確的,因此您應(yīng)避免使用它。

現(xiàn)在,讓我們來看下面的例子。

首先,創(chuàng)建一個名為people表,其生日(birth_date)列使用DATE數(shù)據(jù)類型。

USE testdb;

CREATE TABLE people (

id INT AUTO_INCREMENT PRIMARY KEY,

first_name VARCHAR(50) NOT NULL,

last_name VARCHAR(50) NOT NULL,

birth_date DATE NOT NULL

);

接下來,將一行插入到people表中。

INSERT INTO people(first_name,last_name,birth_date)

VALUES('Max','Su','1992-10-11');

然后,查詢people表中的數(shù)據(jù),如下所示 -

SELECT

first_name,

last_name,

birth_date

FROM

people;

執(zhí)行上面查詢語句,得到以下結(jié)果 -

+------------+-----------+------------+

| first_name | last_name | birth_date |

+------------+-----------+------------+

| Max | Su | 1992-10-11 |

+------------+-----------+------------+

1 row in set

之后,使用兩位數(shù)的年份格式將數(shù)據(jù)插入到people表中。

INSERT INTO people(first_name,last_name,birth_date)

VALUES('Jack','Daniel','01-09-01'),

('Lily','Bush','80-09-01');

在第一行,我們使用01(范圍在00-69)作為年份,所以MySQL將其轉(zhuǎn)換為2001年。在第二行,我們使用80(范圍70-99)作為年份,MySQL將其轉(zhuǎn)換為1980年。

最后,從people表查詢數(shù)據(jù),以檢查數(shù)據(jù)是否根據(jù)轉(zhuǎn)換規(guī)則進(jìn)行轉(zhuǎn)換。

SELECT

first_name,

last_name,

birth_date

FROM

people;

執(zhí)行上面查詢語句,得到以下結(jié)果 -

+------------+-----------+------------+

| first_name | last_name | birth_date |

+------------+-----------+------------+

| Max | Su | 1992-10-11 |

| Jack | Daniel | 2001-09-01 |

| Lily | Bush | 1980-09-01 |

+------------+-----------+------------+

3 rows in set

MySQL DATE函數(shù)

MySQL提供了許多有用的日期功能,可以有效地操作日期。

要獲取當(dāng)前日期和時間,請使用NOW()函數(shù)。

SELECT NOW() as cur_datetime;

執(zhí)行上面查詢語句,得到以下結(jié)果 -

mysql> SELECT NOW() as cur_datetime;

+---------------------+

| cur_datetime |

+---------------------+

| 2017-07-25 21:51:54 |

+---------------------+

1 row in set

要獲取DATETIME值的日期部分,可以使用DATE()函數(shù)。

SELECT DATE(NOW());

執(zhí)行上面查詢語句,得到以下結(jié)果 -

mysql> SELECT DATE(NOW());

+-------------+

| DATE(NOW()) |

+-------------+

| 2017-07-25 |

+-------------+

1 row in set

要獲取當(dāng)前的系統(tǒng)日期,可以使用CURDATE()函數(shù),如下所示:

SELECT CURDATE();

執(zhí)行上面查詢語句,得到以下結(jié)果 -

mysql> SELECT CURDATE();

+------------+

| CURDATE() |

+------------+

| 2017-07-25 |

+------------+

1 row in set

要格式化日期值,可以使用DATE_FORMAT函數(shù)。以下語句使用日期格式模式%m/%d/%Y,格式化日期為:mm/dd/yyyy:

SELECT DATE_FORMAT(CURDATE(), '%m/%d/%Y') today;

執(zhí)行上面查詢語句,得到以下結(jié)果 -

mysql> SELECT DATE_FORMAT(CURDATE(), '%m/%d/%Y') today;

+------------+

| today |

+------------+

| 07/25/2017 |

+------------+

1 row in set

要計算兩個日期值之間的天數(shù),可以使用DATEDIFF函數(shù),如下所示:

SELECT DATEDIFF('2015-11-04','2014-11-04') days;

執(zhí)行上面查詢語句,得到以下結(jié)果 -

要添加幾天,幾周,幾個月,幾年等到一個日期值,可以使用DATE_ADD函數(shù):

SELECT

'2018-01-01' start,

DATE_ADD('2018-01-01', INTERVAL 1 DAY) 'one day later',

DATE_ADD('2018-01-01', INTERVAL 1 WEEK) 'one week later',

DATE_ADD('2018-01-01', INTERVAL 1 MONTH) 'one month later',

DATE_ADD('2018-01-01', INTERVAL 1 YEAR) 'one year later';

執(zhí)行上面查詢語句,得到以下結(jié)果 -

+------------+---------------+----------------+-----------------+----------------+

| start | one day later | one week later | one month later | one year later |

+------------+---------------+----------------+-----------------+----------------+

| 2018-01-01 | 2018-01-02 | 2018-01-08 | 2018-02-01 | 2019-01-01 |

+------------+---------------+----------------+-----------------+----------------+

1 row in set

類似地,可以使用DATE_SUB函數(shù)從日期中減去間隔值:

SELECT

'2018-01-01' start,

DATE_SUB('2018-01-01', INTERVAL 1 DAY) 'one day before',

DATE_SUB('2018-01-01', INTERVAL 1 WEEK) 'one week before',

DATE_SUB('2018-01-01', INTERVAL 1 MONTH) 'one month before',

DATE_SUB('2018-01-01', INTERVAL 1 YEAR) 'one year before';

執(zhí)行上面查詢語句,得到以下結(jié)果 -

+------------+----------------+-----------------+------------------+-----------------+

| start | one day before | one week before | one month before | one year before |

+------------+----------------+-----------------+------------------+-----------------+

| 2018-01-01 | 2017-12-31 | 2017-12-25 | 2017-12-01 | 2017-01-01 |

+------------+----------------+-----------------+------------------+-----------------+

1 row in set

如果要獲取日期值的日期,月份,季度和年份,可以使用相應(yīng)的函數(shù):DAY,MONTH,QUARTER和YEAR,如下所示:

SELECT DAY('2018-12-31') day,

MONTH('2018-12-31') month,

QUARTER('2018-12-31') quarter,

YEAR('2018-12-31') year;

執(zhí)行上面查詢語句,得到以下結(jié)果 -

mysql> SELECT DAY('2018-12-31') day,

MONTH('2018-12-31') month,

QUARTER('2018-12-31') quarter,

YEAR('2018-12-31') year;

+-----+-------+---------+------+

| day | month | quarter | year |

+-----+-------+---------+------+

| 31 | 12 | 4 | 2018 |

+-----+-------+---------+------+

1 row in set

獲得周信息周相關(guān)功能。例如,WEEK函數(shù)返回周數(shù),WEEKDAY函數(shù)返回工作日索引,WEEKOFYEAR函數(shù)返回周日歷。

SELECT

WEEKDAY('2018-12-31') weekday,

WEEK('2018-12-31') week,

WEEKOFYEAR('2018-12-31') weekofyear;

執(zhí)行上面查詢語句,得到以下結(jié)果 -

mysql> SELECT

WEEKDAY('2018-12-31') weekday,

WEEK('2018-12-31') week,

WEEKOFYEAR('2018-12-31') weekofyear;

+---------+------+------------+

| weekday | week | weekofyear |

+---------+------+------------+

| 0 | 52 | 1 |

+---------+------+------------+

1 row in set

如果沒有傳遞第二個參數(shù),或者如果傳遞參數(shù)為0,則week函數(shù)將返回帶有零的索引的周數(shù)。如果傳遞參數(shù)為1,則將返回1索引的周數(shù)。

SELECT

WEEKDAY('2018-12-31') weekday,

WEEK('2018-12-31',1) week,

WEEKOFYEAR('2018-12-31') weekofyear;

執(zhí)行上面查詢語句,得到以下結(jié)果 -

mysql> SELECT

WEEKDAY('2018-12-31') weekday,

WEEK('2018-12-31',1) week,

WEEKOFYEAR('2018-12-31') weekofyear;

+---------+------+------------+

| weekday | week | weekofyear |

+---------+------+------------+

| 0 | 53 | 1 |

+---------+------+------------+

1 row in set

在本教程中,您已經(jīng)了解并學(xué)習(xí)了MySQL DATE數(shù)據(jù)類型以及如何使用一些有用的日期函數(shù)來操作日期值。

¥ 我要打賞

糾錯/補(bǔ)充

收藏

加QQ群啦,易百教程官方技術(shù)學(xué)習(xí)群

注意:建議每個人選自己的技術(shù)方向加群,同一個QQ最多限加 3 個群。

總結(jié)

以上是生活随笔為你收集整理的mysql date类型计算_MySQL date类型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。