GBQ上个月

时间:2016-08-31 00:37:45

标签: google-bigquery

我试图拉上一个月的所有日子但是我的下面的查询仅在上个月的同一天拉出来。这可能吗?谢谢你的帮助!

select *
FROM
(TABLE_DATE_RANGE([BI_UU_HH.CID_BKID_AID_Raw_],
TIMESTAMP(DATE_ADD(CURRENT_DATE(),-1,"Month")),
TIMESTAMP(DATE_ADD(CURRENT_DATE(),-1,"Month"))))

结果: 日期 2016年7月30日

期望的结果: 整月7月

2 个答案:

答案 0 :(得分:3)

使用标准SQL(取消选中"使用Legacy SQL"在选项中):

SELECT *
FROM
`BI_UU_HH.CID_BKID_AID_Raw_*`
WHERE
  SUBSTR(_table_suffix, 0, 6) =
  FORMAT_DATE("%E4Y%m", DATE_SUB(CURRENT_DATE, INTERVAL 1 MONTH))

答案 1 :(得分:0)

尝试

SELECT *
FROM TABLE_QUERY([BI_UU_HH],
"REGEXP_MATCH(table_id, 'CID_BKID_AID_Raw_' + REPLACE(LEFT(STRING(DATE_ADD(CURRENT_TIMESTAMP(), -1, 'MONTH')), 7), '-', ''))")

有关详细信息,请参阅TABLE_QUERY

OR

使用STRFTIME_UTC_USEC函数而不是字符串操作

略微修改的版本(仍在Legacy SQL中)

SELECT *
FROM TABLE_QUERY([BI_UU_HH],
"REGEXP_MATCH(table_id, 'CID_BKID_AID_Raw_' + STRFTIME_UTC_USEC(DATE_ADD(CURRENT_TIMESTAMP(), -1, 'MONTH'), '%Y%m'))")