Как мне преобразовать формат 2018-01-01 в 201801?Это код, который я пробовал
SELECT DATEFROMPARTS ( DATEPART(yyyy, GETDATE()) - 1, 1, 1 )
Вы можете использовать опции форматирования даты с CONVERT - код, указанный ниже, внесет изменения:
DECLARE @dateString varchar(10) SET @dateString = '2018-01-01' SELECT CONVERT(varchar(6), CONVERT(datetime, @dateString, 120), 112)
Вы можете отобразить год и месяц с этим форматом с помощью функции FORMAT.
FORMAT
SELECT FORMAT(GETDATE(), N'yyyyMM')
Но результат не DATE datatype, так что вы не сможете выполнять функции даты против него.Кроме того, FORMAT не лучший результат, если вы планируете делать это миллионы раз.
DATE
Вы можете использовать ЛЕВЫЙ оператор вместе с CONVERT, как указано ниже.в идеале, я бы посоветовал вам хранить данные в правильном типе данных DATE.Это просто ггггММ.Вы должны хранить только в поле CHAR.
DECLARE @test date = '2018-01-01' SELECT LEFT(CONVERT(char(8),@test,112),6)
Если вы также хотите включить месяц и дату, вы можете использовать
select convert(varchar, getdate(), 112)
или вы можете использовать это только для года и месяца
select left(convert(varchar, getdate(), 112),6)
, если при таком способе форматирования даты мы должны преобразовать, как это
select concat(year('2018-01-01'),FORMAT(month('2018-01-01'), '00') )
или в точности так, как форма getdate () означает
SELECT FORMAT(GETDATE(), 'yyyyMM')