簡體   English   中英

獲取日期等於或大於 90 天前的數據

[英]Get data when date is equal to or greater than 90 days ago

我想知道這里是否有人可以為我正在研究的 BigQuery 提供幫助。 當最后一次交互時間等於或大於 90 天前時,我正在嘗試從數據集中提取日期 email 和最后一次交互時間。

我有以下查詢:

SELECT
  date,
  user_email,
  DATE_FROM_UNIX_DATE(gmail.last_interaction_time) AS Last_Interaction_Date,
  DATE_ADD(CURRENT_DATE(), INTERVAL -90 DAY) AS Days_ago
FROM
  `bqadminreporting.adminlogtracking.usage`
WHERE
  'Last_Interaction_Date' >= 'Days_ago'

但是,我遇到以下錯誤:

DATE 值超出允許范圍:從 0001-01-01 到 9999-12-31

據我所知,這是有道理的——所以不完全確定它為什么會拋出錯誤?

看起來您在提交的gmail.last_interaction_time中有一些不一致的值(數據),您需要對其進行處理以避免錯誤。

此外,上述查詢不會按照您預期的 WHERE 條件工作,您應該使用以下查詢來獲得預期的 output。

SELECT * FROM
(SELECT
  date,
  user_email,
  DATE_FROM_UNIX_DATE(gmail.last_interaction_time) AS Last_Interaction_Date,
  DATE_ADD(CURRENT_DATE(), INTERVAL -90 DAY) AS Days_ago
FROM
  `bqadminreporting.adminlogtracking.usage`)
WHERE
  Last_Interaction_Date >= Days_ago

據推測,您的問題是DATE_FROM_UNIX_DATE() 如果沒有樣本數據,實際上不可能確定問題所在。

但是,您無需轉換為日期即可執行此操作。 您可以在 Unix 秒空間中完成所有工作:

select u.*
from `bqadminreporting.adminlogtracking.usage` u
where gmail.last_interaction_time >= unix_seconds(timestamp(current_date)) - 90 * 60 * 60 * 24

請注意,我懷疑問題在於last_interaction_time實際上以毫秒或微秒或其他單位為單位。 這將防止你的錯誤,但它可能不會做你想要的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM