SQL Server Последний день месяца - PullRequest
0 голосов
/ 27 сентября 2019

У меня есть поле varchar, которое содержит даты в этом формате:

YYYY-MM

Мне нужно получить последний день месяца и получить результат в этом формате:

YYYYMMDD

Например:

DECLARE @date VARCHAR(7) = '2019-01'
SELECT REPLACE(@date, '-', '') + RIGHT(@date, 2) AS date

My output is: 20190101
The output I am looking for is: 20190131 

Ответы [ 3 ]

2 голосов
/ 27 сентября 2019

Использовать EOMONTH() - после преобразования значения:

select eomonth(convert(date, @date + '-01', 23))

Если вам нужна строка, используйте FORMAT() или CONVERT() для преобразования значения в строку.

0 голосов
/ 28 сентября 2019

Попробуйте это

Declare @date varchar(25)='2019-01'
Select format(EOMONTH(Cast(Concat(@date,'-01')  as date) ), 'yyyyMMdd')
0 голосов
/ 28 сентября 2019

Если eomonth недоступен в вашей версии SQL Server, создайте функцию;

    CREATE function [dbo].[LastDayofMonth](@Date datetime)
returns datetime
as
    begin
        return DATEADD(mi, -1, DATEADD(mm, DATEDIFF(m, 0, @Date) + 1, 0))       
    end

Отформатируйте результат;

DECLARE @Date VARCHAR(7)
SET @Date = '2019-01'
SELECT CONVERT(VARCHAR(8),DBO.LastDayofMonth(CAST(@Date+'-01' as DATETIME)),112)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...