如何在google bigquery中将日期转换为正确的年份和半年?

时间:2017-04-03 14:49:14

标签: sql google-bigquery

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

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

结果:2016年第2季度,2016年第3季度,2016年第4季度,2017年第1季度,第1季度等

我应该写什么才能获得半年? (2017-S1,2017-S2等)

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

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

1 个答案:

答案 0 :(得分: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