如何在 Postgresql 中创建具有固定日期 + 随机时间间隔的复合日期时间

How to create a composite datetime with fixed date + random time interval in Postgresql

我是 Postgresql 的新手,我正在寻找一种方法来 return 复合日期时间,使用固定日期和随机时间构建,定义为间隔。

一个例子:

2020-12-02 10:00:00
2020-12-02 10:10:20
2020-12-02 08:25:23
2020-12-02 09:12:11

如您所见,日期是固定的,时间保持在 08:00:00 和 10:30:00 之间。

您知道如何使用 Postgresql 查询复制此行为吗?

作为 Postgresql 的新手(但总体上有一些经验 SQL),并且阅读了这里的一些帖子,我找到了一个简单的方法来完成它:

SELECT

 CURRENT_DATE + time '08:00:00' + 

 (random() * interval '3 hours')::time

AS date_wrandom_t

FROM generate_series(1, 50)

generate_series 这里只是为了演示一些结果,你可以省略它并得到一个结果。

它的作用:

  1. 取当前日期(今天)
  2. 定义开始时间(最小值)
  3. 生成 3 小时的随机间隔 -(使用 SELECT (random() * interval '3 hours')::time 测试)
  4. 将结果加到最小时间(08:00:00)

也许这不是最好的解决方案,但我喜欢它,因为它基于简单的语法,易于记忆。

想找时间研究一下这个DBMS,好像很厉害。

欢迎任何addition/suggestion!

我建议:

select '2020-12-02 08:00:00'::timestamp + random() * interval '2 hour 30 minute'

或者,对于当前日期,您可以将其表示为:

select current_date + interval '08:00:00' + random() * interval '02:30'

请注意,这些说明了用 2 小时 30 分钟表示间隔的两种不同方式(甚至没有给出 interval '150 minute' 作为示例)。