MySQL中from_unixtime和unix_timestamp处理数据库时间戳转换问题-案例

Posted JackieDYH

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL中from_unixtime和unix_timestamp处理数据库时间戳转换问题-案例相关的知识,希望对你有一定的参考价值。

mysql数据表设计中,时间字段一般都设计为时间戳格式的,开发人员去查看的时候就显得有点不方便。可以使用FROM_UNIXTIME转换成日期格式进行查看

如果是日期格式的,要转换成时间戳查看呢,只需要把FROM_UNIXTIME换成UNIX_TIMESTAMP即可

案例一 

SELECT *,FROM_UNIXTIME(create_time) AS DATETIME FROM ebk_cls_io_log;

案例二 

select  from_unixtime(at2.payTime, '%Y-%m-%d'), sum(at2.amount) from alipay_trade at2 group by from_unixtime(at2.payTime, '%Y-%m-%d');

 


汇总 

1、时间转时间戳
获取当前时间戳(秒)

select unix_timestamp();
结果:1599665897

获取指定格式日期时间戳

select unix_timestamp('2020-9-9');
结果:1599580800

获取指定格式日期和时间戳的时间戳

select unix_timestamp('2020-9-9 23:49:20');
结果:1599666560

2、时间戳转时间
语法:FROM_UNIXTIME(unix_timestamp,format)
时间戳(unix_timestamp)为10位

select from_unixtime(1599666560,'%Y-%m-%d %H:%i:%S');
结果:2020-09-09 23:49:20
格式描述示例运行结果
%a英文缩写星期名SELECT FROM_UNIXTIME(1599666560,’%a’);Tue
%b英文缩写月名SELECT FROM_UNIXTIME( Now( ), ‘%b’ )Sep
%c月,数值SELECT FROM_UNIXTIME( Now( ), ‘%c’ )9
%D带有英文前缀的月中的第几天SELECT FROM_UNIXTIME( Now( ), ‘%D’ )9th
%d月的天,数值(00-31)SELECT FROM_UNIXTIME( Now( ), '%d ’ )09
%e月的天,数值(0-31)SELECT FROM_UNIXTIME( Now( ), '%e ’ )9
%f微秒SELECT FROM_UNIXTIME(1599666560 , '%f ’ )000000
%H小时 (00-23)SELECT FROM_UNIXTIME(1599666560 , '%H ’ )23
%h小时 (01-12)SELECT FROM_UNIXTIME(1599666560 , '%h ’ )11
%I小时 (01-12)SELECT FROM_UNIXTIME(1599666560, ‘%I’ )11
%i分钟,数值(00-59)SELECT FROM_UNIXTIME(1599666560, ‘%i’ )49
%j年的天 (001-366)SELECT FROM_UNIXTIME(1599666560, ‘%j’ )253
%k小时 (0-23)SELECT FROM_UNIXTIME(1599666560, ‘%k’ )23
%l小时 (1-12)SELECT FROM_UNIXTIME(1599666560, ‘%l’ )11
%M月份,英文SELECT FROM_UNIXTIME(1599666560, ‘%M’ )September
%m月份,数值(00-12)SELECT FROM_UNIXTIME(1599666560, ‘%m’ )09
%p上下午SELECT FROM_UNIXTIME(1599666560, ‘%p’ )PM
%r时间,12-小时(hh:mm:ss AM 或 PM)SELECT FROM_UNIXTIME(1599666560, ‘%r’ )11:49:20 PM
%S秒(00-59)SELECT FROM_UNIXTIME(1599666560, ‘%S’ )20
%s秒(00-59)SELECT FROM_UNIXTIME(1599666560, ‘%s’ )20
%T时间, 24-小时 (hh:mm:ss)SELECT FROM_UNIXTIME(1599666560, ‘%T’ )23:49:20
%U周 (00-53) 星期日是一周的第一天SELECT FROM_UNIXTIME(1599666560, ‘%U’ )36
%u周 (00-53) 星期一是一周的第一天SELECT FROM_UNIXTIME(1599666560, ‘%u’ )37
%V周 (01-53) 星期日是一周的第一天,与 %X 使用SELECT FROM_UNIXTIME(1599666560, ‘%V’ )36
%v周 (01-53) 星期一是一周的第一天,与 %x 使用SELECT FROM_UNIXTIME(1599666560, ‘%v’ )37
%W周几,英文全称SELECT FROM_UNIXTIME(1599666560, ‘%W’ )Wednesday
%w周的天 (0=星期日, 6=星期六)SELECT FROM_UNIXTIME(1599666560, ‘%w’ )3
%X年,4 位,其中的星期日是周的第一天,与 %V 使用SELECT FROM_UNIXTIME(1599666560, ‘%X’ )2020
%x年,4 位,其中的星期一是周的第一天,与 %v 使用SELECT FROM_UNIXTIME(1599666560, ‘%x’ )2020
%Y年,4 位SELECT FROM_UNIXTIME(1599666560, ‘%Y’ )2020
%y年,2 位SELECT FROM_UNIXTIME(1599666560, ‘%y’ )20

以上是关于MySQL中from_unixtime和unix_timestamp处理数据库时间戳转换问题-案例的主要内容,如果未能解决你的问题,请参考以下文章

mysql 时间戳函数FROM_UNIXTIME和UNIX_TIMESTAMP函数的使用说明

LIKE 声明中的%和_是什么意思?

MySQL常见面试题-2

FROM_UNIXTIME 格式化MYSQL时间戳函数

FROM_UNIXTIME 格式化MYSQL时间戳函数

FROM_UNIXTIME 格式化MYSQL时间戳函数