上个月的最后一天 \- BigQuery

新手上路,请多包涵

我正在尝试选择时间戳字段 recdate 的日期值不超过该月最后一个完整日期的行。例如,由于这是 2016 年 7 月,我想要所有日期值不超过 31-06-2016 的行。这曾经在 T-SQL 中正常工作,我将使用以下内容并将其分配给 @today 并将其放在我的 WHERE 中:

 DECLARE @today DATETIME SELECT @today = CONVERT(VARCHAR(25),DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())-0,0)));

我在 BigQuery 中苦苦挣扎,我无法让 DATEDIFF 或 GETDATE 工作,想知道是否有人对此有想法?

最好的祝愿

戴夫

原文由 Dave Papworth 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.8k
2 个回答

2020 年 10 月更新(BigQuery 标准 SQL)

BigQuery 现在支持 LAST_DAY 函数以及算术运算 + 和日期的“-”

因此,现在您可以使用以下选项来获取上个月的最后一天

#standardSQL
select
  date_trunc(current_date(), month) - 1,
  last_day(date_sub(current_date(), interval 1 month)),
  date_sub(last_day(current_date()), interval 1 month)

有输出(记住今天是 10 月 14 日)

在此处输入图像描述

我个人 - 我喜欢第一个选项,因为它最简洁明了!

-- ~~~~~~~~~~~~~~~~~~~

使用以下示例(BigQuery Legacy SQL)

 SELECT DATE(DATE_ADD(CURRENT_DATE() , -DAY(CURRENT_DATE()), "DAY"))

顺便说一句,六月有 30 天 :o) - 除了 Priestley 的“六月三十一日”

原文由 Mikhail Berlyant 发布,翻译遵循 CC BY-SA 4.0 许可协议

DATE_ADD( CURRENT_DATE(), INTERVAL -EXTRACT( DAY FROM CURRENT_DATE()) DAY)

这是 Google BigQuery 的正确语法。

原文由 jbev 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进