2016-12-20 2 views
1

У нас есть стол YearMonth VARCHAR (10), и я пытаюсь создать столбец даты, который даст мне последнюю дату месяца на основе столбца YearMonth.Как получить дату окончания месяца из столбца varchar YearMonth?

For Example: 
201612 - 12/31/2016 
201602 - 02/29/2016 
201702 - 02/28/2017 
+0

Что SQL вы пробовали? мы должны увидеть некоторые усилия :) – happymacarts

ответ

2

Пусть ваш VARCHAR является 201612

Select EOMonth(cast(YourVarchar+'01' as date)) 

Возвращает

2016-12-31 

Если вы хотите формат MM/DD/YYYY

Select Convert(varchar(10),EOMonth(cast(YourVarchar+'01' as date)),101) 
+0

Спасибо, он сработал. – Justin

+1

@ Justin Никогда не сомневался :) –

1

Если вы используете версию SQL до 2012 года:

Добавить месяц до даты с DATEADD, а затем вычесть день также с DATEADD

SELECT DATEADD(DAY, -1, DATEADD(MONTH, 1, CONVERT(DATETIME, '201612' + '01'))) 
+0

Спасибо, он сработал. Я использую SQL 2016. – Justin