数据库中时间戳概念:
把时间t转换成从 1970-01-01 00:00 开始到时间t所经过的秒数。这个数值就是时间t对应的时间戳。
由于是数值方便比较和运算
1.日期转时间戳
— 转十位 select UNIX_TIMESTAMP(‘2018-12-25 12:25:00’);
结果:1545711900
— 转十三位 SELECT REPLACE(unix_timestamp(current_timestamp(3)),’.’,”);
结果:1545711900021
2.时间戳转日期:
FROM_UNIXTIME(unix_timestamp) –unix_timestamp为时间戳
— 十位转 select FROM_UNIXTIME(1545711900);
结果:2018-12-25 12:25:00
有些应用生成的时间戳是比这个多出三位,是毫秒表示,如果要转换,需要先将最后三位去掉(标准的10位数字,如果是13位的话可以以除以千的方式)
— 十三位转 select FROM_UNIXTIME(1597536937000/1000);
结果:2020-08-16 08:15:37.0000
 
Mysql 将秒数转换成时分秒形式
 
由于咱们是东8区,返回的是 1970-01-01 08:00:00 所以需要减去 8 小时
select date_format(date_sub(from_unixtime(288), INTERVAL 8 HOUR), '%H:%i:%s') from dual;
 
SELECT
ll.user_id,
ll.course_id,
ll.access_time,
ll.leave_time,
DATE_FORMAT(
date_sub(
from_unixtime(ll.duration_time),
INTERVAL 8 HOUR
),
“%H:%i:%s”
) AS duration_datetime,
ll.duration_time,
ll.ip,
ll.video_id,
ll.course_live_day,
ll.course_live_start,
FROM_UNIXTIME(ll.course_live_start) AS live_start_dt,
ll.course_live_end,
u.nickname,
c.title
FROM
`efa_live_log` `ll`
LEFT JOIN `efa_user` `u` ON `ll`.`user_id` = `u`.`id`
LEFT JOIN `efa_course` `c` ON `ll`.`course_id` = `c`.`id`
WHERE
`ll`.`user_id` = ‘3694’
AND `ll`.`course_id` = ‘195’
ORDER BY
`ll`.`id` DESC
LIMIT 0,
10
(文章今日已有 1 人访问,总访问量 14 ::>_<::)