一、前言
在处理日期的国际化时区问题时,我们会选择结合时区将日期在Java代码层面作为某个格式的字符串就行传输,最终需要以Date类型将时间存储到数据库。
二、STR_TO_DATE()函数
STR_TO_DATE(str,format)
函数是将时间格式的字符串(str),按照所提供的显示格式(format)转换为DATETIME类型的值。
- STR_TO_DATE()函数可能会根据输入和格式字符串返回DATE,TIME或DATETIME值。
- 如果输入字符串是非法的,则STR_TO_DATE()函数返回NULL。
而DATE_FORMAT(date,format)
函数则是把数据库的日期转换为对应的字符串格式;详细内容见博文:https://blog.csdn.net/Saintmm/article/details/124432214
STR_TO_DATE函数的语法如下:
STR_TO_DATE(str,format);
常用的的format格式,也见博文:https://blog.csdn.net/Saintmm/article/details/124432214
DATE_FORMAT字符串格式 | 格式化日期 |
---|---|
%Y/%m/%d | 2022/04/26 |
%Y-%m-%d | 2022-04-26 |
%e/%c/%Y | 4/8/2022 |
%d/%m/%Y %H:%i | 26/04/2022 17:27 |
%b %d %Y %h:%i %p | Apr 26 2022 05:28 PM |
%Y-%m-%d %T:%f | 2022-04-26 17:29:30:000000 |
%W %D %M %Y %T | Tuesday 26th April 2022 17:31:34 |
三、示例
1> %Y/%m/%d
如果月份和日的数字小于10,用0填充,显示两位数字;
SELECT STR_TO_DATE('2022/04/26','%Y/%m/%d') AS date;
2> %e/%c/%Y
如果月份和日的数字小于10,不再用0填充,可以只显示一位;
SELECT STR_TO_DATE('4/8/2022','%e/%c/%Y') AS date;
3> %d/%m/%Y %H:%i
SELECT STR_TO_DATE('26/04/2022 17:27','%d/%m/%Y %H:%i') AS date;
4> %b %d %Y %h:%i %p
SELECT STR_TO_DATE('Apr 26 2022 05:28 PM','%b %d %Y %h:%i %p') AS date;
5> %Y-%m-%d %T:%f
SELECT STR_TO_DATE('2022-04-26 17:29:30:000000','%Y-%m-%d %T:%f') AS date;
6> %W %D %M %Y %T
SELECT STR_TO_DATE('Tuesday 26th April 2022 17:31:34','%W %D %M %Y %T') AS date;