这给了我从任何日期开始的年份和季度:
CONCAT(STRING(年份(Mydate)),'-Q',STRING(四分之一(Mydate)作为季度
结果:2016-2,2016-3,2016-4,2017-Q1,等等
我该写什么才能拿到半年?(2017-S1,2017-S2等)
S1 (第一学期)在1月1日至6月30日之间;S2 (第2学期)在7月1日至12月31日之间。
将日期转换为季度并将其他表数据连接到正确的季度没有问题,但不知道如何处理半年(我知道sql中不存在直接公式)。谢谢!
发布于 2017-04-03 14:58:44
在下面尝试(它在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 yourTablehttps://stackoverflow.com/questions/43187757
复制相似问题