Google bigquery 在Google BigQuery中计算月差
BigQuery不允许您在DATEDIFF中选择daypart月 在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
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…
子句,如果时间戳在不同的月份,它将报告差异。