如何在 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
这里只是为了演示一些结果,你可以省略它并得到一个结果。
它的作用:
- 取当前日期(今天)
- 定义开始时间(最小值)
- 生成 3 小时的随机间隔 -(使用
SELECT (random() * interval '3 hours')::time
测试)
- 将结果加到最小时间(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'
作为示例)。
我是 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
这里只是为了演示一些结果,你可以省略它并得到一个结果。
它的作用:
- 取当前日期(今天)
- 定义开始时间(最小值)
- 生成 3 小时的随机间隔 -(使用
SELECT (random() * interval '3 hours')::time
测试) - 将结果加到最小时间(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'
作为示例)。