Подтвердить что ты не робот

Как получить месяц и день с лидирующим 0 в SQL? (например, 9 => 09)

DECLARE @day CHAR(2)

SET @day = DATEPART(DAY, GETDATE())

PRINT @day

Если сегодня было 9 декабря, вышесказанное напечатало бы "9".

Я хочу напечатать "09". Как мне это сделать?

4b9b3361

Ответ 1

Положите его на 00 и возьмите вправо 2:

DECLARE @day CHAR(2)

SET @day = RIGHT('00' + CONVERT(NVARCHAR(2), DATEPART(DAY, GETDATE())), 2)

print @day

Ответ 2

Используйте стили даты SQL Server для предварительной форматировки ваших значений даты.

SELECT
    CONVERT(varchar(2), GETDATE(), 101) AS monthLeadingZero  -- Date Style 101 = mm/dd/yyyy
    ,CONVERT(varchar(2), GETDATE(), 103) AS dayLeadingZero   -- Date Style 103 = dd/mm/yyyy

Ответ 3

Для SQL Server 2012 и выше, с ведущими нулями:

 SELECT FORMAT(GETDATE(),'MM') 

без

SELECT    MONTH(GETDATE())

Ответ 4

Попробуйте следующее:

SELECT CONVERT(varchar(2), GETDATE(), 101)

Ответ 5

Ведущий 0 день

SELECT FORMAT(GetDate(), 'dd')

Ответ 6

Select Replicate('0',2 - DataLength(Convert(VarChar(2),DatePart(DAY, GetDate()))) + Convert(VarChar(2),DatePart(DAY, GetDate())

Далеко опережающий, говорит он, удалив язык из щеки.

Обычно, когда вам нужно начинать делать подобные вещи в SQL, вам нужно переключиться с can I, если бы я был.

Ответ 7

Сверните свой собственный метод

Это общий подход для остального дополнения. Концепция состоит в том, чтобы использовать REPLICATE для создания версии, которая представляет собой не что иное, как добавленное значение. Затем соедините его с фактическим значением, используя вызов isnull/coalesce, если данные NULLable. Теперь у вас есть строка, которая в два раза превышает целевой размер точно до целевой длины или где-то посередине. Теперь просто откройте N самых правых символов, и у вас есть левая дополненная строка.

SELECT RIGHT(REPLICATE('0', 2) + CAST(DATEPART(DAY, '2012-12-09') AS varchar(2)), 2) AS leftpadded_day

Go native

Функция CONVERT предлагает различные методы для получения предварительно отформатированных дат. Формат 103 указывает dd, что означает, что начальный нуль сохраняется, поэтому все, что нужно сделать, - это отрезать первые 2 символа.

SELECT CONVERT(char(2), CAST('2012-12-09' AS datetime), 103) AS convert_day

Ответ 8

SELECT RIGHT('0' 
             + CONVERT(VARCHAR(2), Month( column_name )), 2) 
FROM   table 

Ответ 9

DECLARE @day CHAR(2)

SET @day = right('0'+ cast(day(getdate())as nvarchar(2)),2)

print @day

Ответ 10

выберите   right ('0000' + cast (datepart (year, GETDATE()) как varchar (4)), 4) + '-' + +   right ('00 '+ cast (datepart (месяц, GETDATE()) как varchar (2)), 2) +' - '+ +   right ('00 '+ cast (datepart (день, getdate()) как varchar (2)), 2) как YearMonthDay