gpt4 book ai didi

postgresql - 将日期和时区与 Postgresql 中的 timestamptz 进行比较

转载 作者:行者123 更新时间:2023-11-29 12:09:03 32 4
gpt4 key购买 nike

我有一个表,其中包含一个 date 列和一个包含时区的 varchar 列。我想编写一个查询,以选择时区午夜日期在给定 timestamp with time zone 之前的所有行。

例如给定

CREATE TABLE scheduled_tasks (
id serial primary key,
run_date date not null,
customer_timezone varchar not null
);

INSERT INTO scheduled_tasks(run_date, customer_timezone) VALUES
('2017-10-15', 'America/Los_Angeles'),
('2017-10-15', 'America/New_York'),
('2017-10-15', 'Asia/Tokyo');

如果我希望每个任务都是在其相关时区午夜后运行? (所以我想要东京和纽约的任务,而不是洛杉矶的任务,因为 2017-10-15T06:00:00Z 是洛杉矶 14 日晚上 11:00。)

我看到了 make_timestamptz 函数,但我最好的选择真的是:

SELECT *
FROM scheduled_tasks
WHERE make_timestamptz(
EXTRACT (YEAR from run_date)::int,
EXTRACT (MONTH from run_date)::int,
EXTRACT (DAY from run_date)::int,
0,
0,
0.0,
customer_timezone) < '2017-10-15T06:00:00';

SqlFiddle:http://sqlfiddle.com/#!17/a8e38/4/0

最佳答案

SELECT run_date::timestamp AT TIME ZONE customer_timezone < '2017-10-15T06:00:00Z'::timestamptz
FROM scheduled_tasks;

在此查询中,我首先创建特定时区的时间,然后是 UTC 的预期运行时间,然后进行比较。

关于postgresql - 将日期和时区与 Postgresql 中的 timestamptz 进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46655514/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com