DECLARE @day CHAR(2)
SET @day = DATEPART(DAY, GETDATE())
PRINT @day
Если сегодня было 9 декабря, вышесказанное напечатало бы "9".
Я хочу напечатать "09". Как мне это сделать?
DECLARE @day CHAR(2)
SET @day = DATEPART(DAY, GETDATE())
PRINT @day
Если сегодня было 9 декабря, вышесказанное напечатало бы "9".
Я хочу напечатать "09". Как мне это сделать?
Положите его на 00 и возьмите вправо 2:
DECLARE @day CHAR(2)
SET @day = RIGHT('00' + CONVERT(NVARCHAR(2), DATEPART(DAY, GETDATE())), 2)
print @day
Используйте стили даты 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
Для SQL Server 2012 и выше, с ведущими нулями:
SELECT FORMAT(GETDATE(),'MM')
без
SELECT MONTH(GETDATE())
Попробуйте следующее:
SELECT CONVERT(varchar(2), GETDATE(), 101)
Ведущий 0 день
SELECT FORMAT(GetDate(), 'dd')
Select Replicate('0',2 - DataLength(Convert(VarChar(2),DatePart(DAY, GetDate()))) + Convert(VarChar(2),DatePart(DAY, GetDate())
Далеко опережающий, говорит он, удалив язык из щеки.
Обычно, когда вам нужно начинать делать подобные вещи в SQL, вам нужно переключиться с can I, если бы я был.
Это общий подход для остального дополнения. Концепция состоит в том, чтобы использовать REPLICATE для создания версии, которая представляет собой не что иное, как добавленное значение. Затем соедините его с фактическим значением, используя вызов isnull/coalesce, если данные NULLable. Теперь у вас есть строка, которая в два раза превышает целевой размер точно до целевой длины или где-то посередине. Теперь просто откройте N самых правых символов, и у вас есть левая дополненная строка.
SELECT RIGHT(REPLICATE('0', 2) + CAST(DATEPART(DAY, '2012-12-09') AS varchar(2)), 2) AS leftpadded_day
Функция CONVERT предлагает различные методы для получения предварительно отформатированных дат. Формат 103 указывает dd
, что означает, что начальный нуль сохраняется, поэтому все, что нужно сделать, - это отрезать первые 2 символа.
SELECT CONVERT(char(2), CAST('2012-12-09' AS datetime), 103) AS convert_day
SELECT RIGHT('0'
+ CONVERT(VARCHAR(2), Month( column_name )), 2)
FROM table
DECLARE @day CHAR(2)
SET @day = right('0'+ cast(day(getdate())as nvarchar(2)),2)
print @day
выберите 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