在Select查询中从年和月创建日期



我正在开发Vertica

我有一个问题,看起来很容易,但我找不到解决的方法。

从一个查询中,我可以得到2个字段";月份";以及";年份";。我想要的是自动选择另一个字段Date,我将构建为"01/Month/Year"(作为sql Date格式(。目标是:

我有什么

SELECT MONTH, YEAR FROM MyTable

Output:

01   2020
11   2019
09   2021

我想要什么

SELECT MONTH, YEAR, *answer* FROM MyTable

Output:

01   2020   01-01-2020
11   2019   01-11-2019
09   2021   01-09-2021

对不起,这看起来真的很简单,但我没有找到任何好的方法。提前谢谢。

不要使用字符串操作来构建日期,您可能会把事情搞得一团糟:今天可能是:16.07.202107/16/2021,也可能是2021-07-16,在法国,例如:16/07/2021。然后,你也可以左切零——或者用"七月"代替07。。。。

尝试:

WITH
my_table (mth,yr) AS (
SELECT  1, 2020
UNION ALL SELECT 11, 2019
UNION ALL SELECT  9, 2021
)
SELECT
yr
, mth
, ADD_MONTHS(DATE '0001-01-01',(yr-1)*12+(mth-1)) AS firstofmonth
FROM my_table
ORDER BY 1,2;
yr  | mth | firstofmonth 
------+-----+--------------
2019 |  11 | 2019-11-01
2020 |   1 | 2020-01-01
2021 |   9 | 2021-09-01

我终于找到了一种方法:

SELECT MONTH, YEAR, CONCAT(CONCAT(YEAR, '-'), CONCAT(MONTH, '-01')) FROM MyTable

试试这个:

SELECT [MONTH], [YEAR], CONCAT(CONCAT(CONCAT('01-',[MONTH]),'-'),[YEAR]) AS [DATE] 
FROM MyTable

输出为:

| MONTH | YEAR |  DATE      |
|-------|------|------------|
|  01   | 2020 | 01-01-2020 |
|  11   | 2019 | 01-11-2019 |
|  09   | 2021 | 01-09-2021 |

最新更新