【问题标题】:Bigquery - Where clause - Dynamically get 1st of previous monthBigquery - Where 子句 - 动态获取上个月的第一天
【发布时间】:2016-03-15 23:51:45
【问题描述】:

我有一个日期字段已设置为字符串(很遗憾我无法更改),显示为“2016-02-01”

我想编写一个查询,我可以使用 where 子句始终选择上个月。

如果有帮助,数据始终设置为每月 1 日。

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:
    SELECT d as m, DATE(DATE_ADD(TIMESTAMP(d) , -1, 'MONTH')) as prev_m
    FROM 
      (SELECT '2016-01-01' AS d),
      (SELECT '2016-02-01' AS d),
      (SELECT '2016-03-01' AS d),
      (SELECT '2016-04-01' AS d),
      (SELECT '2016-05-01' AS d),
      (SELECT '2016-06-01' AS d),
      (SELECT '2016-07-01' AS d),
      (SELECT '2016-08-01' AS d),
      (SELECT '2016-09-01' AS d),
      (SELECT '2016-10-01' AS d),
      (SELECT '2016-11-01' AS d),
      (SELECT '2016-12-01' AS d)
    

    为 WHERE 子句添加

    (我意识到下面很可能是你问的)

    WHERE YEAR(d) = YEAR(DATE_ADD(CURRENT_DATE(), -1, 'MONTH')) 
    AND MONTH(d) = MONTH(DATE_ADD(CURRENT_DATE(), -1, 'MONTH'))
    

    【讨论】:

      【解决方案2】:

      除了 Mikhail Berlyant 的回答 (date(date_add(timestamp(d),-1,'month'))) 之外,您还可以考虑构建一个表,其中一列中包含当前月份,另一列中包含上个月。根据您的需要,此表还可以包含与六个月前、一年前等对应的列。然后您加入该表。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-04-03
        • 2013-11-25
        • 1970-01-01
        • 2013-02-14
        • 1970-01-01
        • 2020-07-26
        相关资源
        最近更新 更多