MySQL對(duì)字符串使用STR_TO_DATE()函數(shù)詳解
MySQL字符串使用STR_TO_DATE()函數(shù)
前面我們利用 date_formate() 函數(shù),按照自己希望的格式來(lái)輸出日期時(shí)間。
我們從用戶界面接收到的信息都是以字符串的形式在進(jìn)行傳遞,如何把字符串轉(zhuǎn)換為日期類型進(jìn)行存儲(chǔ)呢?可使用 str_to_date() 函數(shù)。
把字符串轉(zhuǎn)換為日期時(shí)間
需要注意以下幾點(diǎn):
- 待轉(zhuǎn)換字符串中只能出現(xiàn)數(shù)字,否則返回結(jié)果為 null;
- 如果格式字符串僅包含日期,則待轉(zhuǎn)字符串至少需要 8 位數(shù)字,轉(zhuǎn)換時(shí)默認(rèn)前四位是年份,中間兩位是月份,最后兩位是日期,格式字符串無(wú)需使用
-區(qū)分日期各部分,結(jié)果會(huì)自動(dòng)用-拼接日期各個(gè)部分; - 轉(zhuǎn)換后日期時(shí)間必須有效,否則返回結(jié)果為 null;
- 如果被轉(zhuǎn)字符串超出 8 位且格式字符串中無(wú)時(shí)間格式,則自動(dòng)取前 8 位轉(zhuǎn)換為日期;
- 格式字符串可包含時(shí)間格式,格式字符串無(wú)需使用
:區(qū)分時(shí)間各部分,結(jié)果中的時(shí)間部分會(huì)自動(dòng)用:連接各個(gè)部分。
str_to_date() 函數(shù)的用法和 date_format() 基本一致,只是輸出數(shù)據(jù)的類型不同,前提都需要熟悉輸出格式,參照date_format() 。
接下來(lái)就上述5點(diǎn)注意事項(xiàng)進(jìn)行舉例說(shuō)明
(這一段說(shuō)明是針對(duì) mysql 的,webide 使用的是兼容 mysql 的 MariaDB,在此環(huán)境下進(jìn)行下面 5 點(diǎn)說(shuō)明的實(shí)驗(yàn),可能會(huì)得到不同結(jié)果):
待轉(zhuǎn)換字符串中只能出現(xiàn)數(shù)字,否則返回結(jié)果為 null。
select str_to_date('2020070a','%Y%m%d');輸出結(jié)果:
+----------------------------------+
| str_to_date('2020070a','%Y%m%d') |
+----------------------------------+
| NULL |
+----------------------------------+
1 row in set, 2 warnings (0.00 sec)如果格式字符串僅包含日期,則待轉(zhuǎn)字符串至少需要 8 位數(shù)字。
select str_to_date('202007','%Y%m%d');輸出結(jié)果:
+--------------------------------+
| str_to_date('202007','%Y%m%d') |
+--------------------------------+
| NULL |
+--------------------------------+
1 row in set, 1 warning (0.00 sec)注意:字符串 202007 低于 8 位,其結(jié)果返回 null。
轉(zhuǎn)換后日期時(shí)間必須有效,否則返回結(jié)果為 null。
select str_to_date('20201301','%Y%m%d');輸出結(jié)果:
+----------------------------------+
| str_to_date('20201301','%Y%m%d') |
+----------------------------------+
| NULL |
+----------------------------------+
1 row in set, 2 warnings (0.00 sec)注意:20201301 轉(zhuǎn)換為日期后得到的月份是 13,超出有效范圍,故結(jié)果返回 null。
如果被轉(zhuǎn)字符串超出 8 位且格式字符串中無(wú)時(shí)間格式,則自動(dòng)取前 8 位轉(zhuǎn)換為日期。
select str_to_date('2020070110','%Y%m%d');輸出結(jié)果:
+------------------------------------+
| str_to_date('2020070110','%Y%m%d') |
+------------------------------------+
| 2020-07-01 |
+------------------------------------+
1 row in set, 1 warning (0.00 sec)格式字符串可以包含時(shí)間格式。
select str_to_date('20200701104523','%Y%m%d%H%i%S');輸出結(jié)果:
+----------------------------------------------+
| str_to_date('20200701104523','%Y%m%d%H%i%S') |
+----------------------------------------------+
| 2020-07-01 10:45:23 |
+----------------------------------------------+
1 row in set (0.00 sec)總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
MySQL系列關(guān)于NUll值的經(jīng)驗(yàn)總結(jié)分析教程
這篇文章主要為大家介紹了MySQL系列關(guān)于NUll值的一些經(jīng)驗(yàn)總結(jié)分析,關(guān)于null值的影響作用以及為什么會(huì)出現(xiàn)null值的原因等等問(wèn)題的解析2021-10-10
windows 10下mysql 5.7.21 winx64安裝配置方法圖文教程
這篇文章主要為大家詳細(xì)介紹了windows 10下mysql 5.7.21 winx64安裝配置方法圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02
SQL中的開(kāi)窗函數(shù)(窗口函數(shù))
這篇文章主要介紹了SQL中的開(kāi)窗函數(shù)(窗口函數(shù))使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08
mysql中插入表數(shù)據(jù)中文亂碼問(wèn)題的解決方法
mysql是我們項(xiàng)目中非經(jīng)常常使用的數(shù)據(jù)型數(shù)據(jù)庫(kù),下面這篇文章主要給大家介紹了關(guān)于mysql中插入表數(shù)據(jù)中文亂碼問(wèn)題的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-09-09
mysql實(shí)現(xiàn)將字符串轉(zhuǎn)化成int類型
這篇文章主要介紹了mysql實(shí)現(xiàn)將字符串轉(zhuǎn)化成int類型方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08
Mysql?InnoDB?的內(nèi)存結(jié)構(gòu)詳情
這篇文章主要介紹了Mysql InnoDB的內(nèi)存結(jié)構(gòu)詳情,InnoDB存儲(chǔ)引擎的邏輯存儲(chǔ)結(jié)構(gòu)是什么呢,下面我們就一起進(jìn)入文章了解更多詳細(xì)內(nèi)容吧,感興趣的小伙伴可以參考一下2022-05-05

