这给了我任何日期的年份和季度:
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中不存在)。谢谢!
答案 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