使用 bigquery 变量@DS_END_DATE 我失去了 24 小时

问题描述 投票:0回答:1

因此,从 bigquery 到 google data studio 的报告中有一段查询:

WHERE 
   creation_date IN (NULL, '1970-01-01T00:00:00') OR 
   creation_date BETWEEN PARSE_DATE('%Y%m%d', @DS_START_DATE) AND
   PARSE_DATE('%Y%m%d', @DS_END_DATE)

@DS_END_DATE
帮助用户在GDS报告中选择日期范围。但是,在过滤数据时,我错过了最后一天。例如,如果
@DS_END_DATE
'2022-10-20'
,我在报告中找不到带有
creation_date = '2022-10-20T14:03:08'
的行。但报告包含所有数据,直到
'2022-10-20'

我如何查询 bigquery 以获取来自 @DS_END_DATE 的所有内容,就像它一样

'2022-10-20T23:59:59'

附言是的,第一次遇到了一些麻烦,所以我用

creation_date IN (NULL, '1970-01-01T00:00:00')
来识别删除的ID,但是没关系。

sql google-bigquery google-data-studio
1个回答
1
投票

当 BigQuery 进行比较时,它正在规范化数据类型并将您提供的日期转换为时间戳。当它进行这种转换时,它看起来像

2022-10-20 00:00:00 UTC
。鉴于您可以看到为什么它在
2022-10-20
上掉东西。 为了缓解这种情况,您可以执行以下操作:

select 
creation_date
from sample_data
where cast(creation_date as date) between '2022-10-19' and '2022-10-20'
© www.soinside.com 2019 - 2024. All rights reserved.