Bigquery - Where 子句 - 动态获取上个月的第一天
Bigquery - Where clause - Dynamically get 1st of previous month
我有一个日期字段已设置为字符串(不幸的是我无法更改它)显示为“2016-02-01”
我想编写一个查询,我可以使用 where 子句来始终 select 上个月。
如果有帮助,数据始终设置为一个月的 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)
Added for WHERE clause
(我意识到下面很可能是你问的)
WHERE YEAR(d) = YEAR(DATE_ADD(CURRENT_DATE(), -1, 'MONTH'))
AND MONTH(d) = MONTH(DATE_ADD(CURRENT_DATE(), -1, 'MONTH'))
除了 Mikhail Berlyant 的回答 (date(date_add(timestamp(d),-1,'month'))
) 之外,您还可以考虑构建一个 table,在一列中包含当前月份,在另一列中包含上个月。根据您的需要,此 table 还可以包含对应于六个月前、一年前等的列。然后您加入 table.
我有一个日期字段已设置为字符串(不幸的是我无法更改它)显示为“2016-02-01”
我想编写一个查询,我可以使用 where 子句来始终 select 上个月。
如果有帮助,数据始终设置为一个月的 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)
Added for WHERE clause
(我意识到下面很可能是你问的)
WHERE YEAR(d) = YEAR(DATE_ADD(CURRENT_DATE(), -1, 'MONTH'))
AND MONTH(d) = MONTH(DATE_ADD(CURRENT_DATE(), -1, 'MONTH'))
除了 Mikhail Berlyant 的回答 (date(date_add(timestamp(d),-1,'month'))
) 之外,您还可以考虑构建一个 table,在一列中包含当前月份,在另一列中包含上个月。根据您的需要,此 table 还可以包含对应于六个月前、一年前等的列。然后您加入 table.