在 PostgreSQL 中,我需要一种方法来确定当前时间是否在具有 opens_at 和 closes_at 时间戳的特定模型的运行时间内。这样做的有效 Postgres 方法是什么。
对于 Sqlite3,我有:
(opens_at > closes_at AND
(TIME(opens_at) > :now OR :now < TIME(closes_at)))
OR
(closes_at > opens_at AND
(TIME(opens_at) < :now AND TIME(closes_at) > :now))
我忘了说这是通过 ActiveRecord
运行的,所以 :now
实际上等于当前的 UTC 时间。
最佳答案
可能最简单的做法是将时间戳
转换为time
。 s 并使用 localtime
:
opens_at::time > localtime or localtime < closes_at::time
...
Rails 将在数据库(包括数据库连接)中包含 UTC 中的所有内容,因此您不必担心时区问题。
关于sql - 只比较postgres中两个时间戳的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20501202/