Ищу замену года в SQL сервере - PullRequest
0 голосов
/ 28 мая 2020

Я конвертирую дату, используя CONVERT(varchar,DateOfBirth,101) для дат рождения.

Я хочу показать эти даты с текущим годом, я пробовал REPLACE, но вы не можете использовать с ним подстановочные знаки и когда Я использую DATEPART, он не форматирует правильными цифрами для месяца и дня. Я также не могу добавить годы, потому что это совершенно разные даты рождения. Спасибо.

Ответы [ 3 ]

2 голосов
/ 28 мая 2020

Если вы хотите отображать дату в виде строки в формате 101 для текущего года, в одном из вариантов используется прямое format():

format(DateOfBirth, 'MM/dd/2020')

Вы можете вычислить текущую дату динамически:

format(DateOfBirth, concat('MM/dd/', year(getdate())))

С другой стороны, если вы хотите получить результат как date, вы можете использовать datefromparts():

datefromparts(year(getdate()), month(DateOfBirth), day(DateOfBirth))
0 голосов
/ 28 мая 2020

Если это значение даты, вы можете использовать функцию FORMAT. Если это символьное значение, вы можете использовать RIGHT и REPLACE.

DECLARE @dateValue DATETIME = '05/12/1999'
DECLARE @dateCharValue VARCHAR(12) = '05/12/1999'

SELECT FORMAT(@dateValue, 'MM/dd/2020')
SELECT REPLACE(@dateCharValue, RIGHT(@dateCharValue,4),2020)
--Result
05/12/2020
0 голосов
/ 28 мая 2020

Это может вам помочь:

Код CONVERT(varchar(5),GETDATE(),1) вернет это 05/27, а затем просто добавьте год даты

SELECT CONVERT(varchar(5),GETDATE(),1) + '/' + cast(year(getdate()) as varchar)

или

SELECT CONVERT(varchar(5),GETDATE(),1) + '/' + convert(varchar,year(getdate()))

Результат обоих:

05/27/2020 --(This is my current date n.n )

Это работает, но если вы используете строку, похожую на ваш пример, DateOfBirth будет переменной, и если это строка (DateOfBirth = '5/27/1987') вам нужно преобразовать строку DateOfBirth в Date:

SELECT CONVERT(varchar(5),convert(date,DateOfBirth),1) + '/' + cast(year(GETDATE()) as varchar)

или

SELECT CONVERT(varchar(5),convert(date,DateOfBirth),1) + '/' + convert(varchar,year(GETDATE()))

Результат обоих:

05/27/2020 
...