如何根据bigquery中的某一天游标,获取具有特定日/月的以下日期?

vatpfxk5  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(541)

我在bigquery中有一个跟踪我所做交易的表,我希望能够轻松地计算从今天开始的下一个帐单日期。因此,我有以下字段:
第一笔交易的日期
当前\u日期
付款类型(年、月、周、日)
根据付款的类型,我想能够很容易地计算出下一个帐单日期。
例如,如果 Date_of_first_transaction = "2019-06-11" 以及 Current_Date = "2021-04-27" 以及 Payment_type = "Yearly" 所以我的下一个结账日期是 "2021-06-11" .
另一个例子:如果 Date_of_first_transaction = "2020-12-13" 以及 Current_Date = "2021-04-27" 以及 Payment_type = "Monthly" 所以我的下一个结账日期是 "2021-05-13" .
我在想我怎样才能做到这一点,没有声调的 CASE WHEN... THEN ... END 你知道吗?
谢谢您!

a9wyjsp7

a9wyjsp71#

如果我理解正确的话,你可以使用 date_diff() 以及 date_add() :

select t.*,
       (case when payment_type = 'yearly'
             then date_add(date_of_first_transaction,
                           interval (1 + date_diff(current_date, date_of_first_transaction, year)) year)
             when payment_type = 'monthly'
             then date_add(date_of_first_transaction,
                           interval (1 + date_diff(current_date, date_of_first_transaction, month)) month)
             when payment_type = 'weekly'
             then date_add(date_of_first_transaction,
                           interval (1 + date_diff(current_date, date_of_first_transaction, week)) week)
             when payment_type = 'daily'
             then date_add(date_of_first_transaction,
                           interval (1 + date_diff(current_date, date_of_first_transaction, day)) day)
        end)     
from t;

注意:一定要测试一下。这可能不是你想要的,因为 date_diff() 返回两个值之间的日期边界数。

相关问题