MySQL日期和字符串相互转化

本文将介绍MySQL中的日期、字符串函数,以及怎样利用这些函数将日期转换成字符串,或者将字符串转换成日期。

日期转字符串

date_format(date, format) 函数用于以不同的格式显示日期/时间数据。

其中:

  • date 参数是合法的日期

  • format 规定日期/时间的输出格式

format 可以使用的格式有:

%a    缩写星期名    

%b    缩写月名    

%c    月,数值    

%D    带有英文前缀的月中的天    

%d    月的天,数值(00-31)    

%e    月的天,数值(0-31)    

%f    微秒    

%H    小时 (00-23)    

%h    小时 (01-12)    

%I    小时 (01-12)    

%i    分钟,数值(00-59)    

%j    年的天 (001-366)    

%k    小时 (0-23)    

%l    小时 (1-12)    

%M    月名    

%m    月,数值(00-12)    

%p    AM 或 PM    

%r    时间,12-小时(hh:mm:ss AM 或 PM)    

%S    秒(00-59)    

%s    秒(00-59)    

%T    时间, 24-小时 (hh:mm:ss)    

%U    周 (00-53) 星期日是一周的第一天    

%u    周 (00-53) 星期一是一周的第一天    

%V    周 (01-53) 星期日是一周的第一天,与 %X 使用    

%v    周 (01-53) 星期一是一周的第一天,与 %x 使用    

%W    星期名    

%w    周的天 (0=星期日, 6=星期六)    

%X    年,其中的星期日是周的第一天,4 位,与 %V 使用    

%x    年,其中的星期一是周的第一天,4 位,与 %v 使用    

%Y    年,4 位    

%y    年,2 位    

实例1:将当前日期格式化为“****-**-** **:**:**”字符串

mysql> select date_format(now(), '%Y-%m-%d %H:%I:%S');
+----------------------------------------+
| date_format(now(),'%Y-%m-%d %H:%I:%S') |
+----------------------------------------+
| 2019-11-08 22:10:02                    |
+----------------------------------------+
1 row in set

实例2:将当前日期格式化为“****年**月**日 **时**分**秒”

mysql> select date_format(now(), '%Y年%m月%d日 %H时%I分%S秒');
+-------------------------------------------------+
| date_format(now(), '%Y年%m月%d日 %H时%I分%S秒') |
+-------------------------------------------------+
| 2019年11月09日 11时11分02秒                     |
+-------------------------------------------------+
1 row in set

日期转时间戳

unix_timestamp(date) 若无参数调用,则返回一个Unix timestamp ('1970-01-01 00:00:00' GMT 之后的秒数) 作为无符号整数。若用date 来调用UNIX_TIMESTAMP(),它会将参数值以'1970-01-01 00:00:00' GMT后的秒数的形式返回。date 可以是一个DATE 字符串、一个 DATETIME字符串、一个 TIMESTAMP或一个当地时间的YYMMDD 或YYYMMDD格式的数字。

实例1:使用 UNIX_TIMESTAMP() 函数返回 UNIX 格式的时间戳,输入 SQL 语句和执行结果如下。

mysql> select UNIX_TIMESTAMP();
+------------------+
| UNIX_TIMESTAMP() |
+------------------+
|       1573271228 |
+------------------+
1 row in set

实例2:使用 UNIX_TIMESTAMP 获取指定日期的时间戳。

mysql> select UNIX_TIMESTAMP('2019-11-01');
+------------------------------+
| UNIX_TIMESTAMP('2019-11-01') |
+------------------------------+
|                   1572537600 |
+------------------------------+
1 row in set

mysql> select UNIX_TIMESTAMP('20191101');
+----------------------------+
| UNIX_TIMESTAMP('20191101') |
+----------------------------+
|                 1572537600 |
+----------------------------+

字符串转日期

str_to_date(str,format) 函数是将时间格式的字符串(str),按照所提供的显示格式(format)转换为DATETIME类型的值。

实例:将给定的日期字符串转换成日期对象

mysql> select str_to_date('2019-11-09', '%Y-%m-%d %H:%I:%S');
+------------------------------------------------+
| str_to_date('2019-11-09', '%Y-%m-%d %H:%I:%S') |
+------------------------------------------------+
| 2019-11-09 00:00:00                            |
+------------------------------------------------+
1 row in set

mysql> select str_to_date('2019-11-09', '%Y-%m-%d');
+---------------------------------------+
| str_to_date('2019-11-09', '%Y-%m-%d') |
+---------------------------------------+
| 2019-11-09                            |
+---------------------------------------+
1 row in set

时间戳转日期/字符串

FROM_UNIXTIME(unix_timestamp) , FROM_UNIXTIME(unix_timestamp,format) 返回 'YYYY-MM-DD HH:MM:SS' 或 YYYYMMDDHHMMSS 格式值的 unix_timestamp 参数表示,具体格式取决于该函数是否用在字符串中或是数字语境中。若 format 已经给出,则结果的格式是根据 format 字符串而定。 format 可以包含同 DATE_FORMAT() 函数输入项列表中相同的说明符。

实例:

mysql> select from_unixtime(1509257408);
+---------------------------+
| from_unixtime(1509257408) |
+---------------------------+
| 2017-10-29 14:10:08       |
+---------------------------+
1 row in set

mysql> select from_unixtime(1509257408,'%Y~%m~%d %H:%I:%S');
+-----------------------------------------------+
| from_unixtime(1509257408,'%Y~%m~%d %H:%I:%S') |
+-----------------------------------------------+
| 2017~10~29 14:02:08                           |
+-----------------------------------------------+
1 row in set
少壮不努力,老大徒悲伤。——汉乐府古辞《长歌行》
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
其他应用
公众号