【问题标题】:How to convert a date to the correct year and half year in google bigquery?如何在 google bigquery 中将日期转换为正确的年份和半年?
【发布时间】:2017-08-28 12:06:09
【问题描述】:

这给了我任何日期的年份和季度:

CONCAT(STRING(YEAR(mydate)),'-Q',STRING(QUARTER(mydate))) 作为季度

结果:2016-Q2、2016-Q3、2016-Q4、2017-Q1 等

我应该写什么来获得半年? (2017-S1、2017-S2 等)

S1(第一学期)在 1 月 1 日至 6 月 30 日之间; S2(第二学期)是在 7 月 1 日至 12 月 31 日之间。

将日期分成季度然后将其他表数据连接到正确的季度没有问题,但不知道如何做半年(我知道直接公式在 sql 中不存在)。谢谢!

【问题讨论】:

    标签: sql google-bigquery


    【解决方案1】:

    在下面试试(它在 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-05
      • 1970-01-01
      • 1970-01-01
      • 2021-12-09
      相关资源
      最近更新 更多