Principales respuestas
No puedo formatear el mes con cero a la izquierda

Pregunta
-
Hola amigos del foro: Quiero crear una variable que contenga el mes de la fecha con un cero a la izquierda, pero la variable me queda en blanco, ¿cual es mi error?
DECLARE @ElPeriodo Char(2)
DECLARE @FechaDeCierre Date
SET @FechaDeCierre=GETDATE()
SET @ElPeriodo= RIGHT('00' + CAST(MONTH(@FechaDeCierre) AS char),2)
select @ElPeriodo AS Resultado "Aquí la variable me sale en blanco"Gracias por la ayuda.
Respuestas
-
Nota la siguiente expresión: 'CAST(MONTH(@FechaDeCierre) AS char)'.
Resultado: |09 |
No defines la longitud para el tipo char, por tanto se considera la longitud predeterminada (30) dado que -el tipo char- participa como argumento de la función CAST() y como observas las dos últimas posiciones son dos caracteres de espacio en blanco.
DECLARE @Option1 char(2) = RIGHT(CONCAT('00', MONTH(GETDATE())), 2); DECLARE @Option2 char(2) = FORMAT(GETDATE(), 'MM'); SELECT @Option1, @Option2; GO
TEST ON LINE
Nuestra profesión exige tener pasión por resolver problemas de una manera óptima y eficiente.
- Propuesto como respuesta Jorge TurradoMVP viernes, 29 de septiembre de 2017 8:35
- Marcado como respuesta Carlos Cuenta lunes, 2 de octubre de 2017 0:06
Todas las respuestas
-
Hola Carlos Cuenta
Entiendo que cuando el mes es de un dígito, entonces agregarás un cero a la izquierda, en caso contrario solo mantendrás los dos dígitos del mes? te propongo hacerlo con case:
-- declaras una variable para guardar el mes: declare @mes as int -- asignas el valor del mes actual set @mes = (select month(getdate())) --preguntas en caso la longitud sea 1, le agrego un cero, en caso la longitug sea 2, no agrego nada select Case when len(@mes) = 1 then '0' + cast(@mes as char(2)) else cast(@mes as char(2)) end
Saludos
Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.
-
Nota la siguiente expresión: 'CAST(MONTH(@FechaDeCierre) AS char)'.
Resultado: |09 |
No defines la longitud para el tipo char, por tanto se considera la longitud predeterminada (30) dado que -el tipo char- participa como argumento de la función CAST() y como observas las dos últimas posiciones son dos caracteres de espacio en blanco.
DECLARE @Option1 char(2) = RIGHT(CONCAT('00', MONTH(GETDATE())), 2); DECLARE @Option2 char(2) = FORMAT(GETDATE(), 'MM'); SELECT @Option1, @Option2; GO
TEST ON LINE
Nuestra profesión exige tener pasión por resolver problemas de una manera óptima y eficiente.
- Propuesto como respuesta Jorge TurradoMVP viernes, 29 de septiembre de 2017 8:35
- Marcado como respuesta Carlos Cuenta lunes, 2 de octubre de 2017 0:06
-