嘗試下面(它是在傳統的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
感謝mikhail!完美的作品! –