Bigquery - Where子句 - 动态获得上个月的第1个

时间:2016-03-15 13:22:41

标签: google-bigquery

我有一个日期字段已设置为字符串(不幸的是我无法更改此字符),显示为' 2016-02-01'

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

如果有帮助,数据总是设置为1月1日。

2 个答案:

答案 0 :(得分:3)

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'))

答案 1 :(得分:0)

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