日期转字符串
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