在下面试试(它在 Legacy SQL 中,我看到你还在使用它)
#legacySQL
SELECT
CONCAT(STRING(YEAR(mydate)),'-Q',STRING(QUARTER(mydate))) as quarter,
CONCAT(STRING(YEAR(mydate)),'-S',STRING(IF(QUARTER(mydate) < 3, 1, 2))) as semester
FROM
(SELECT CURRENT_DATE() AS mydate),
(SELECT '2016-02-02' AS mydate),
(SELECT '2016-09-02' AS mydate)
如果你是migrating to Standard SQL(强烈推荐)-检查相应的版本
#standardSQL
WITH yourTable AS (
SELECT CURRENT_DATE() AS mydate UNION ALL
SELECT '2016-02-02' UNION ALL
SELECT '2016-09-02'
)
SELECT
mydate,
CONCAT(FORMAT_DATE("%Y", mydate), '-Q', CAST(EXTRACT(QUARTER FROM mydate) AS STRING)) AS quarter,
CONCAT(FORMAT_DATE("%Y", mydate), IF(EXTRACT(QUARTER FROM mydate) < 3, '-S1', '-S2')) AS semester
FROM yourTable