Как вставить дату в этом году, т.е. 30/7 / CurrentYear - PullRequest
0 голосов
/ 16 мая 2019

Я хочу написать скрипт, который будет последовательно вставлять месяц и дату, но использовать текущий год.Я пробовал это:

DECLARE @startDateVar DATETIME = '31/7/'+year(getdate())

Но это не работает с ошибкой

Преобразование не удалось при преобразовании значения varchar '31/7 /' в тип данных int.

В идеале я могу записать текущий год и передать его конструктору для переменной DATETIME.Каков наилучший способ сделать это?

Ответы [ 3 ]

1 голос
/ 16 мая 2019

Используйте правильный формат даты YYYY-MM-DD, чтобы избежать неоднозначности, и используйте CONCAT() для объединения строк (так как YEAR() возвращает int, вам нужно либо использовать CONCAT() для объединения, либо привести егов строку, прежде чем вы сможете добавить ее в другую строку).

DECLARE @startDateVar DATETIME = CONCAT(YEAR(GETDATE()), '-07-31')
1 голос
/ 16 мая 2019

Вы можете использовать DATEFROMPARTS:

SELECT DATEFROMPARTS(YEAR(GETDATE()),7,31);
0 голосов
/ 16 мая 2019

SELECT GETDATE() вернется как 2019-05-16 08:35:03.257, поэтому, если вам присвоить значение в формате yyyy-mm-dd, оно примет.

Так что использование CONCAT() с форматом yyyy-mm-dd помогает:

DECLARE @startDateVar DATETIME = CONCAT(year(getdate()), '-07-31')
SELECT @startDateVar

вывод будет 2019-07-31 00:00:00.000

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...