Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL-将日期移动到48小时窗口内_Sql_Google Bigquery - Fatal编程技术网

SQL-将日期移动到48小时窗口内

SQL-将日期移动到48小时窗口内,sql,google-bigquery,Sql,Google Bigquery,我有很多历史性的时间戳日期。基本上,我需要模拟一个新的日期,使历史日期移动到当前日期的48小时窗口内 这是日期列的摘录: 2019-05-07 17:46:57.733 UTC 2019-05-15 13:03:25.247 UTC 2019-05-07 13:27:49.453 UTC 2019-05-11 04:24:02.293 UTC 2019-04-18 08:00:54.660 UTC 2019-04-25 05:34:36.777 UTC 2019-05-14 16:48:0

我有很多历史性的时间戳日期。基本上,我需要模拟一个新的日期,使历史日期移动到当前日期的48小时窗口内

这是日期列的摘录:

2019-05-07 17:46:57.733 UTC
2019-05-15 13:03:25.247 UTC
2019-05-07 13:27:49.453 UTC 
2019-05-11 04:24:02.293 UTC 
2019-04-18 08:00:54.660 UTC 
2019-04-25 05:34:36.777 UTC
2019-05-14 16:48:07.863 UTC
假设当前日期为2019-10-03 15:00:00。预计日期范围应介于
2019-10-03 15:00:00
2019-10-01 15:00:00

预期结果如下

2019-10-02 17:46:57.733 UTC
2019-10-03 13:03:25.247 UTC
2019-10-03 13:27:49.453 UTC 
2019-10-03 04:24:02.293 UTC 
2019-10-02 08:00:54.660 UTC 
2019-10-02 05:34:36.777 UTC
2019-10-01 16:48:07.863 UTC

为什么不构建两天的随机时间戳呢

select timestamp_add(current_timestamp, interval cast(rand() * (60 * 60 * 24 * 2) as int64) second)
from t

感觉就像是在寻找一个随机日期函数

CREATE TEMP FUNCTION random_date()
RETURNS DATE
AS ( DATE_SUB(CURRENT_DATE(), INTERVAL CAST(FLOOR(RAND() * 29 / 10) AS INT64) DAY));

with data as (
select "2019-05-07 17:46:57.733 UTC" as date_time UNION ALL
select "2019-05-15 13:03:25.247 UTC" UNION ALL
select "2019-05-07 13:27:49.453 UTC" UNION ALL
select "2019-05-11 04:24:02.293 UTC" UNION ALL
select "2019-04-18 08:00:54.660 UTC" UNION ALL
select "2019-04-25 05:34:36.777 UTC" UNION ALL
select "2019-05-14 16:48:07.863 UTC" )

SELECT 
  CONCAT(FORMAT_DATE("%Y-%m-%d", random_date()), " ", SUBSTR(date_time, 12)) 
FROM data;
输出:

+-----------------------------+
|             f0_             |
+-----------------------------+
| 2019-10-01 17:46:57.733 UTC |
| 2019-10-01 13:03:25.247 UTC |
| 2019-10-02 13:27:49.453 UTC |
| 2019-10-03 04:24:02.293 UTC |
| 2019-10-03 08:00:54.660 UTC |
| 2019-10-03 05:34:36.777 UTC |
| 2019-10-02 16:48:07.863 UTC |
+-----------------------------+

为了满足我的好奇心…这种转换的实际用途是什么???