Получите 2-значный номер за месяц
У меня есть целочисленный столбец "Месяц"
Я хотел бы получить 2-значное число в течение месяца.
Это то, что я пробовал: DATEPART (mm, @Date)
Он возвращает одну цифру в течение месяцев с января по сентябрь
Я использую SQL Server 2008
У кого-нибудь есть предложение?
Ответы
Ответ 1
есть разные способы сделать это
- Использование RTRIM и определение диапазона :
like
SELECT RIGHT('0' + RTRIM(MONTH('12-31-2012')), 2);
- Используя Подстрока, чтобы просто извлечь часть месяца после преобразования даты в текст
как
SELECT SUBSTRING(CONVERT(nvarchar(6),getdate(), 112),5,2)
см. Fiddle
Могут быть другие способы получить это.
Ответ 2
Функция
FORMAT(date,'MM')
выполнит задание с двумя цифрами.
Ответ 3
В Pinal Dave есть хорошая статья с некоторыми примерами о том, как добавить конечные 0s к номерам SQL.
В одном из способов используется функция RIGHT
, которая сделает оператор примерно следующим:
SELECT RIGHT('00' + CAST(DATEPART(mm, @date) AS varchar(2)), 2)
Ответ 4
Еще один простой трюк:
SELECT CONVERT(char(2), cast('2015-01-01' as datetime), 101) -- month with 2 digits
SELECT CONVERT(char(6), cast('2015-01-01' as datetime), 112) -- year (yyyy) and month (mm)
Выходы:
01
201501
Ответ 5
Альтернатива DATEPART
SELECT LEFT(CONVERT(CHAR(20), GETDATE(), 101), 2)
Ответ 6
добавьте 0 перед этим, проверив, имеет ли значение значение между 1 и 9, сначала введя его в varchar
select case when DATEPART(month, getdate()) between 1 and 9
then '0' else '' end + cast(DATEPART(month, getdate()) as varchar(2))
Ответ 7
Просто можно использовать:
SELECT RIGHT('0' + CAST(MONTH(@Date) AS NVARCHAR(2)), 2)
Ответ 8
Try:
select right ('0'+convert(nvarchar(2), DATEPART(mm, getdate())),2 )
Ответ 9
CONVERT (char (2), getdate(), 101)
Ответ 10
Для меня самым быстрым решением было
DATE_FORMAT(CURDATE(),'%m')
Ответ 11
Мой способ сделать это:
right('0'+right(datepart(month,[StartDate]),2),2)
Причина внутренней "правильной" функции состоит в том, чтобы не допустить, чтобы SQL делал это как математическое сложение, что снова оставит нам одну цифру.