我正在开发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.2021
或07/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 |