2017-04-03 31 views
1

這使我的年和季度從任何日期:如何將日期轉換爲google bigquery中的正確年份和半年?

CONCAT(STRING(YEAR(指明MyDate)), ' - Q',STRING(季(指明MyDate)))作爲季度

結果:2016-Q2,2016-Q3,2016-Q4,2017-Q1等

我應該寫些什麼來獲得半年? (2017-S1,2017-S2等)

S1(第一學期)介於1月1日至6月30日之間; S2(第二學期)在7月1日至12月31日之間。

將日期轉換爲季度然後將其他表格數據連接到正確的季度沒有問題,但不知道如何做半年(我知道直接的公式不存在於sql中)。謝謝!

回答

1

嘗試下面(它是在傳統的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 
+0

感謝mikhail!完美的作品! –

相關問題