【发布时间】:2016-03-15 23:51:45
【问题描述】:
我有一个日期字段已设置为字符串(很遗憾我无法更改),显示为“2016-02-01”
我想编写一个查询,我可以使用 where 子句始终选择上个月。
如果有帮助,数据始终设置为每月 1 日。
【问题讨论】:
标签: google-bigquery
我有一个日期字段已设置为字符串(很遗憾我无法更改),显示为“2016-02-01”
我想编写一个查询,我可以使用 where 子句始终选择上个月。
如果有帮助,数据始终设置为每月 1 日。
【问题讨论】:
标签: google-bigquery
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'))
【讨论】:
除了 Mikhail Berlyant 的回答 (date(date_add(timestamp(d),-1,'month'))) 之外,您还可以考虑构建一个表,其中一列中包含当前月份,另一列中包含上个月。根据您的需要,此表还可以包含与六个月前、一年前等对应的列。然后您加入该表。
【讨论】: