Если вы хотите сгенерировать новую строку , которая объединяет числа c лет и месяцев, вы используете строковые функции:
concat(year, '-', case when len(month) = 1 then '0' end, month)
Выражение case
слева месяц с 0
, когда он имеет только одну ди git.
Теперь вопрос был отредактирован, и кажется, что вы хотите последний день месяца. Если это так, вы можете использовать datefromparts()
, чтобы сгенерировать дату, которая представляет первый день месяца, и eomonth()
, чтобы получить последний день этого месяца:
eomonth(datefromparts(year, month, 1))
И если вы действительно хотите datetime вместо даты:
cast(eomonth(datefromparts(year, month, 1)) as datetime)
Демонстрация на DB Fiddle :
year | month | endofmonth
---: | ----: | :----------------------
2012 | 7 | 2012-07-31 00:00:00.000
2010 | 6 | 2010-06-30 00:00:00.000
2009 | 1 | 2009-01-31 00:00:00.000
2009 | 3 | 2009-03-31 00:00:00.000
2018 | 10 | 2018-10-31 00:00:00.000