提问人:Mirabror Sodikov 提问时间:11/12/2023 最后编辑:Mirabror Sodikov 更新时间:11/13/2023 访问量:66
使用 node-postgres 和原始 sql 进行查询时的时间戳不同
Different timestamp when querying with node-postgres and raw sql
问:
我的postgres数据库在docker中运行。我从主机终端启动了nestjs服务器。数据库是在另一个微服务中创建的 与棱镜。
我的时区是 UTC+5。我正在使用 node-postgres 运行下面的查询:
INSERT INTO "Chat" default values RETURNING *
插入的数据保存为 -10h 而不是 -5h。
表定义:
CREATE TABLE "Chat" (
"id" UUID NOT NULL DEFAULT gen_random_uuid(),
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "Chat_pkey" PRIMARY KEY ("id")
);
我期望的是 node-postgres 应该插入带有 MY_TIME_ZONE - 5h 的行,而不是 MY_TIME_ZONE - 10h。
此外:
select current_timestamp;
-- this returns: 2023-11-12 15:18:37.322506+00
-- while my time: 2023-11-12 20:18:37.322506+00
答:
0赞
Abdul Aziz
11/13/2023
#1
您可以在 postgresql 和 docker 中手动设置您当前基于的时区以同步它 -
SET timezone='UTC+5';
对于 postgresql 和 Docker,您可以通过执行以下命令来检查 Docker 容器中的当前时区设置:
docker exec -it <container_name_or_id> date
如果时区不正确,您可能需要在 Dockerfile 或docker-compose.yml中进行调整。例如,您可以设置环境变量 TZ -
environment:
- TZ=Asia/Kolkata
并且,要使 node.js 应用程序知道发生了什么,请使用脚本开头的变量。process.env.TZ
process.env.TZ = 'UTC+5';
将它们全部同步在一起应该不允许任何错误的余地。
评论
now()
2023-11-12T02:55:51.480Z
2023-11-12 07:55:51.480
Z