Google bigquery 在Google BigQuery中计算月差

Google bigquery 在Google BigQuery中计算月差,google-bigquery,Google Bigquery,BigQuery不允许您在DATEDIFF中选择daypart月 在BigQuery中是否还有其他方法可以做到这一点 我可以使用以下时间获得天数差异,但不能使用月份 SELECT OrderID, OrderDate, STRING( YEAR ( OrderDate )) + '-' + STRING(MONTH ( OrderDate )) as order_month, UserID, FirstOrderDate DATEDIFF( OrderDate, Firs

BigQuery不允许您在DATEDIFF中选择daypart月

在BigQuery中是否还有其他方法可以做到这一点

我可以使用以下时间获得天数差异,但不能使用月份

SELECT 
  OrderID,
  OrderDate,
  STRING( YEAR ( OrderDate )) + '-' + STRING(MONTH ( OrderDate )) as order_month, 
  UserID,
  FirstOrderDate
DATEDIFF( OrderDate, FirstOrderDate) as date_diff,
FROM [orders.orders] 
WHERE FirstOrderDate > DATE_ADD(CURRENT_TIMESTAMP(), -1, 'YEAR')
这个怎么样

(12 * YEAR(t2) + MONTH(t2)) - (12 * YEAR(t1) + MONTH(t1))
    + IF (DAY(t2) >= DAY(t1), 0, -1)
通过几个示例,它看起来像您想要的:

SELECT 
(12 * YEAR(t2) + MONTH(t2)) - (12 * YEAR(t1) + MONTH(t1))
    + IF (DAY(t2) >= DAY(t1), 0, -1)
FROM 
    (SELECT TIMESTAMP("2010-12-01") as t1, TIMESTAMP("2011-01-01") as t2), // 1
    (SELECT TIMESTAMP("2010-12-02") as t1, TIMESTAMP("2011-01-01") as t2), // 0
    (SELECT TIMESTAMP("2010-12-01") as t1, TIMESTAMP("2011-12-01") as t2), // 12
    (SELECT TIMESTAMP("2010-10-21") as t1, TIMESTAMP("2015-01-10") as t2)  // 50

使用标准SQL,您可以使用
date\u diff

#StandardSQL
select date_diff(current_date, date '2018-03-06', month)

谢谢你,乔丹。这是可行的,但我实际上在寻找的是,如果第二个值在不同的月份下降,则应根据相隔的月份计算。例如:(选择TIMESTAMP(“2010-12-02”)作为t1,TIMESTAMP(“2011-01-01”)作为t2)应该在下个月返回1作为its。在这种情况下,您可以删除
+IF(DAY…
子句,如果时间戳在不同的月份,它将报告差异。