在 Select 查询中根据年份和月份创建日期

Create a date from Year and Month on a Select query

我正在研究 Vertica

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

从查询中,我可以得到 2 个字段“月”和“年”。我想要的是自动 select 另一个字段 Date,我将其构建为“01/Month/Year”(作为 sql 日期格式)。目标是:

我有什么

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

抱歉,看起来真的很笨很容易,但我没有找到任何好的方法。提前致谢。

我终于找到了这样做的方法:

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 |

不要使用字符串操作来构建日期,您可能会把事情搞得一团糟: 今天可能是:16.07.202107/16/2021,也可能是 2021-07-16,在法国,例如:16/07/2021。然后,你也可以离开 - trim 零 - 或者 'July' 而不是 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