gpt4 book ai didi

postgresql - 如何使用用户指定的时间和时区运行常规任务?

转载 作者:行者123 更新时间:2023-11-29 13:09:19 24 4
gpt4 key购买 nike

需要为我的每个用户运行一个常规作业,但我希望它在他们不在线时运行。由于它们可能会在午夜开启,我希望它们能够指定时间以及它们的时区。

为给定用户运行作业后,我想预先计算下一次出现在他们时区的时间并存储它以便于查询(虽然我不确定这是最好的方法)

到目前为止,我已经弄清楚了以下内容:

  • 由于没有日期和时间类型存储时区,我需要一个单独的时区字段
  • 我需要存储不带时区的时间,以便在操作时不会转换
  • 我(可能)不能使用间隔,因为它们不考虑夏令时

我发现在 TIMESTAMP WITHOUT TIME ZONE 上使用 AT TIME ZONE 将计算本地时间发生的绝对时间,但我还没有还没想好如何添加用户的本地时间偏好。

到目前为止,我有这个:SELECT (TIMESTAMP '明天' AT TIME ZONE 时区) my_table

我想要这样的东西:UPDATE my_table SET next_day_start_timestamptz=((TIMESTAMP 'tomorrow' + day_start_time) AT TIME ZONE timezone) WHERE id=1 但我一直收到类型错误。

我怎样才能让它工作?

最佳答案

这取决于day_start_time 的数据类型及其存储方式。

如果它是文本类型和适当的整数或整数类型(例如:09 或 9),您可以简单地做

select ((TIMESTAMP 'tomorrow'
+ INTERVAL '1 hour' * day_start_time::int)
AT TIME ZONE day_start_time ) FROM my_table;

如果是表示开始时间的时间数据类型,可以直接加上

select ((TIMESTAMP 'tomorrow'
+ day_start_time ) AT TIME ZONE day_start_time ) FROM t

DEMO

关于postgresql - 如何使用用户指定的时间和时区运行常规任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56981810/

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