将日期转换成时间戳(例如:北京时间2021-12-02 08:00:00)
1.利用网上的时间戳在线转换工具
https://tool.lu/timestamp/
2.利用postgresql的函数转换
-- 首先要确定服务器所用的时区
show time zone;
show timezone;
-- Asia/Shanghai
-- 查看所有或指定国家的时区名称信息
select * from pg_timezone_names where abbrev in ('CST');
-- 带时区转换
select EXTRACT(epoch FROM CAST('2021-12-02 08:00:00' AS TIMESTAMPTZ))
-- 1638403200
-- 不到时区转换
select EXTRACT(epoch FROM CAST('2021-12-02 08:00:00' AS TIMESTAMP))
-- 1638432000
-- 设置时区, 会话级别
set TIME zone 'GMT';
select EXTRACT(epoch FROM CAST('2021-12-02 00:00:00' AS TIMESTAMPTZ))
3.利用linux系统的date转换
##查看linux的时区,时区在东八区
date -R
Mon, 06 Dec 2021 14:23:25 +0800
##date -d '2021-12-02 08:00:00' +'%s'
1638403200
##服务器是系统时区是在00
date -R
Mon, 06 Dec 2021 06:25:53 +0000
##date -d '2021-12-02 00:00:00' +'%s'
1638403200
4.利用mysql的unix_timestamp()
select unix_timestamp('2021-12-01 08:00:00')
##查看mysql的时区设置
show varibales like '%time_zone%';
##修改当前会话的时区
set time_zone = '+8:00';
##修改全局的时间
set global time_zone = '+8:00';
flush privileges;
将时间戳转换成日期
1.在线转换工具
https://tool.lu/timestamp/
2.postgresql的to_timestamp()函数
select to_timestamp(1638403200)
2021-12-02 08:00:00
3.利用linux系统的date转换
##将时间戳转换成系统时间
date -d @1638403200
Thu Dec 2 08:00:00 CST 2021
4.利用mysql的from_timestamp()函数
select from_timestamp(1638403200)