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