MySQL字符串使用STR_TO_DATE()函數(shù)舉例說明
STR_TO_DATE() 函數(shù)
前面(《MySQL 對日期使用 DATE_FORMAT()函數(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ù)的類型不同,前提都需要熟悉輸出格式,參照上表。
接下來就上述 5 點注意事項進行舉例說明(這一段說明是針對 mysql 的,webide 使用的是兼容 mysql 的 MariaDB,在此環(huán)境下進行下面 5 點說明的實驗,可能會得到不同結(jié)果):
1. 待轉(zhuǎn)換字符串中出現(xiàn)數(shù)字以外的,自動去除字符,然后添加0至8位轉(zhuǎn)換為日期
MariaDB [(none)]> select str_to_date('2023050a', '%Y%m%d');
+-----------------------------------+
| str_to_date('2023050a', '%Y%m%d') |
+-----------------------------------+
| 2023-05-00 |
+-----------------------------------+
1 row in set, 1 warning (0.000 sec)
2. 如果格式字符串僅包含日期,則待轉(zhuǎn)字符串至少需要 8 位數(shù)字
MariaDB [(none)]> select str_to_date('202305', '%Y%m%d');
+---------------------------------+
| str_to_date('202305', '%Y%m%d') |
+---------------------------------+
| 2023-05-00 |
+---------------------------------+
1 row in set (0.000 sec)
結(jié)果解析:字符串 202305 低于 8 位,其結(jié)果會自動補0至8位。
3. 轉(zhuǎn)換后日期時間必須有效,否則返回結(jié)果為 null
MariaDB [(none)]> select str_to_date('20231501', '%Y%m%d');
+-----------------------------------+
| str_to_date('20231501', '%Y%m%d') |
+-----------------------------------+
| NULL |
+-----------------------------------+
1 row in set, 1 warning (0.000 sec)
結(jié)果解析:20231501 轉(zhuǎn)換為日期后得到的月份是 15,超出有效范圍,故結(jié)果返回 null。
4. 如果被轉(zhuǎn)字符串超出 8 位且格式字符串中無時間格式,則自動取前 8 位轉(zhuǎn)換為日期
MariaDB [(none)]> select str_to_date('2023050110', '%Y%m%d');
+-------------------------------------+
| str_to_date('2023050110', '%Y%m%d') |
+-------------------------------------+
| 2023-05-01 |
+-------------------------------------+
1 row in set, 1 warning (0.000 sec)
5. 格式字符串可以包含時間格式
MariaDB [(none)]> select str_to_date('20230501104523', '%Y%m%d%H%i%S');
+-----------------------------------------------+
| str_to_date('20230501104523', '%Y%m%d%H%i%S') |
+-----------------------------------------------+
| 2023-05-01 10:45:23 |
+-----------------------------------------------+
1 row in set (0.000 sec)
MariaDB [(none)]> 總結(jié)
到此這篇關(guān)于MySQL字符串使用STR_TO_DATE()函數(shù)舉例說明的文章就介紹到這了,更多相關(guān)MySQL字符串STR_TO_DATE()函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
為什么Mysql?數(shù)據(jù)庫表中有索引還是查詢慢
這篇文章主要介紹了為什么Mysql數(shù)據(jù)庫表中有索引還是查詢慢,以?user_info?這張表來作為分析的基礎(chǔ),在?user_info?這張表上,我們分別創(chuàng)建了idx_name以及idx_phone?二級索引以及?idx_age_address?聯(lián)合索引展開詳細內(nèi)容,需要的小伙伴可以參考一下2022-05-05
MySQL性能優(yōu)化之如何從底層原理到實戰(zhàn)落地
本文將融合底層理論與實戰(zhàn)經(jīng)驗,構(gòu)建“原理認知-問題定位-優(yōu)化實施-工程保障”的完整體系,助力開發(fā)者實現(xiàn)MySQL性能的精準提升,本文給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧2026-01-01
生產(chǎn)環(huán)境的MySQL事務(wù)隔離級別方式
本文探討了MySQL數(shù)據(jù)庫在RR(可重復讀)和RC(讀已提交)隔離級別下的鎖機制,在RR級別下,UPDATE語句會鎖定所有符合條件的行,包括不符合條件的行,以防止幻讀,而在RC級別下,UPDATE語句僅鎖定符合條件的行,通過半一致性讀優(yōu)化,可以進一步提高并發(fā)度2025-02-02
在CentOS上MySQL數(shù)據(jù)庫服務(wù)器配置方法
最近工作中經(jīng)常需要使用到MySQL,有時候在WINXP,有時候在Linux中,而這次,需要在CentOS中配置一下,還需要用到phpmyadmin, 在網(wǎng)上搜了不少的資料。2010-04-04

