当月份是数字时,有没有办法将日期格式设置为字符?

Is there a way to set a date format to a character when month is numeric?

我有 2 列,例如 Year:2010 和 Month:3 并且想从这些列创建一个日期 我找到了以下方式:

SELECT TO_DATE(concat('2010',concat('3','01')), 'YYYYMMDD')

它现在可以正常工作,因为它给出了 2012-06-04,但是当我输入 '03' 时,它开始给出正确的答案。我应该如何更改 YYYYMMDD 中的 MM 部分以使代码正常工作?

我可能建议使用算术来构造值,然后转换为字符串和日期:

select to_date( (year * 10000 + month * 100 + 1)::varchar, 'YYYYMMDD')

您也可以使用 ADD_MONTHS(),在您的情况下:

WITH
indata(yr,mth) AS (
            SELECT 2010,  3
  UNION ALL SELECT 2021,  6
)
SELECT
  ADD_MONTHS('0001-01-01',(yr-1)*12+mth-1) AS resulting_date
, yr
, mth
FROM indata;
-- out  resulting_date |  yr  | mth 
-- out ----------------+------+-----
-- out  2010-03-01     | 2010 |   3
-- out  2021-06-01     | 2021 |   6