关系型数据库跨时区查询简介

以PostgreSQL为例

PostgreSQL时间日期相关文档

http://postgres.cn/docs/9.4/functions-datetime.html

创建表

-- 自增主键
-- created与updated都是默认的

create table student
(
    id   serial   primary key,
    name           varchar(32),
    score           integer,
    created          timestamp with time zone default now(),
    updated          timestamp with time zone default now()
    
);

查看一下时区与“当前时间/日期等”

或者可以:

查询一下当前的日期:

插入几条默认数据

insert into student(name,score) values('whw1',88),('naruto1',99),('whw2',88),('naruto3',99),('whw4',88),('naruto5',99),('whw6',88),('naruto7',99)

查看一下表结构及结果结果:

可以看到,因为数据库选用的失去是UTC,所以插入数据时默认时间都是UTC时间,比当前的时间晚了8个小时。

东八区的零点其实就是UTC时区的16点! 

     东8区的零点其实就是UTC时区的16点!

所以:东八区的19号的0点到24点,实际上对应UTC时区的18号的16点到19号的16点!

查询19日创建的数据

修改其中几个时间到下午16点之后还用date函数直接查会有问题

 

此时再用date函数直接查会有问题:

date函数加八小时查询

~~~

~~~

posted on 2021-12-19 19:43  江湖乄夜雨  阅读(129)  评论(0编辑  收藏  举报