SQL:利用STR_TO_DATE(string, format_mask)将文本型数据更改为日期型数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL:利用STR_TO_DATE(string, format_mask)将文本型数据更改为日期型数据相关的知识,希望对你有一定的参考价值。
参考技术A 函数介绍:STR_TO_DATE(string, format_mask),将文本转换成日期型。string:对应的文本数据,如“1/1/2017 0:00”;“August 10 2017”;“‘20140422154706’”
format_mask:是根据前面的文本数据(string),输入对应的文本数据格式;
下面举出相关例子:
SELECT STR_TO_DATE('1/1/2017 0:00','%c/%d/%Y %H:%i');
运行结果:2017-01-01 00:00:00
SELECT STR_TO_DATE('1-1-2017 02:00','%c-%d-%Y %H:%i');
运行结果:2017-01-01 02:00:00
SELECT STR_TO_DATE('112017 02:00','%c%d%Y %H:%i');
运行结果:2017-11-20 02:00:00
SELECT STR_TO_DATE('August 10 2017','%M %d %Y');
运行结果:2017-08-10
从上面的例子我们看出,这个函数还是比较简单的,唯一要做的就是对对应的string写出对应的匹配表达式就好了。
注意:
在面对不同的string文本的时候,需要使用不同的表达方式。
如月份是:August,则只能用 %M来匹配;当月份是数字时可以用%c或%m来匹配;
如小时是:24小时计时时只能用%H或者%k,12小时计时则需要用%h;
等等...以后有再用到的会再补充上。
SQL 中使用 STR_TO_DATE 的日期转换查询
【中文标题】SQL 中使用 STR_TO_DATE 的日期转换查询【英文标题】:Date conversion query in SQL using STR_TO_DATE 【发布时间】:2021-12-29 01:58:11 【问题描述】:在我的表格中,有一个日期列,即 ORDER DATE,格式为 dd-mm-yyyy,该日期列的数据类型为文本。现在,我想从 yyyy-mm-dd 转换格式。但是日期格式根本没有改变。尝试使用 STR_TO_DATE 但日期中的年份仅为 2020 年。不知道如何修复它,或者是否有更好的方法来转换 MySQL 中的日期。
例如:
SELECT STR_TO_DATE('14-09-2017','%d-%m-%y') AS DATE;
Result coming as 2020-09-14
或者假设
SELECT STR_TO_DATE('20-MAR-2018','%d-%b-%y') AS DATE;
Result coming as 2020-03-20
日期和月份正常到来,但年份没有到来。请帮助如何正确转换日期格式。
【问题讨论】:
检查 documentation%Y
的四位数年份
"此日期列的数据类型是文本。" - 从不将日期值存储为字符串。
【参考方案1】:
尝试像下面这样更改您的命令,您将得到答案: SELECT STR_TO_DATE('14-09-2017','%d-%m-%Y') AS DATE;
有关命令的更多信息,请参阅documentation。
【讨论】:
感谢已解决的帮助问题。有什么办法可以更改此日期“14-09-2017”的数据类型,它是文本类型,格式类似于 dd-mm-yyyy?如果它在那里,那么我将更改该日期列的数据类型并将其用作日期列。以上是关于SQL:利用STR_TO_DATE(string, format_mask)将文本型数据更改为日期型数据的主要内容,如果未能解决你的问题,请参考以下文章
sql中将字符串和时间格式的互相转换:date_format()str_to_date()
sql中将字符串和时间格式的互相转换:date_format()str_to_date()