java—如何在sql查询中为h2数据库生成随机时间戳?

j0pj023g  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(462)

我在一个名为 "mytable" 其中两个字段的类型 "TIMESTAMP" .

为了更新表,我编写了以下查询:

UPDATE mytable 
SET START_TIME_ = "2018-01-01 01:01:01" , END_TIME_ = "2020-01-01 01:01:01";

我想知道如何修改我的查询,以便它在开始时间和结束时间之间生成随机日期 2018-01-01 01:01:01 以及 2020-01-01 01:01:01 . 因为h2时间戳不是unix时间戳,所以我不确定该如何处理它。我很感激你能提供的任何帮助。

gdrx4gfi

gdrx4gfi1#

在h2 1.4.200中,您可以使用

UPDATE mytable SET
    START_TIME_ = @T := TIMESTAMP '2018-01-01 01:01:01'
        + RAND() * INTERVAL '730 00:00:00' DAY TO SECOND,
    END_TIME_ = @T + (TIMESTAMP '2020-01-01 01:01:01' - @T) * RAND();
``` `INTERVAL '730 00:00:00' DAY TO SECOND` 可以替换为上下限之间的减法运算 `(TIMESTAMP '2020-01-01 01:01:01' - TIMESTAMP '2018-01-01 01:01:01')` .
请注意 `START_TIME_` 这里是线性的,但是 `END_TIME_` 不是。如果这样的分布不能满足您的需要,您需要使用一些更复杂的表达式,但是您可以在其中使用相同的datetime算术运算。
还请注意,内联变量赋值语法使用 `:=` 操作员而不是 `=` 接线员。

相关问题