sql >> Base de Datos >  >> RDS >> Sqlserver

Convierta un nombre de mes en el número de mes en SQL Server (T-SQL)

En SQL Server, puede usar el MONTH() función para convertir el nombre de un mes a su número correspondiente.

Ejemplo

Este es un ejemplo de cómo convertir el nombre de un mes en el número del mes.

SELECT MONTH('September' + '1,1');

Resultado:

9

Lo que estoy haciendo aquí es básicamente fabricar una "fecha" (que incluye mi mes especificado) para que SQL Server no arroje un error al usar MONTH() función sin una fecha válida.

Esta función acepta cualquier expresión que se pueda resolver en un tiempo , fecha , pequeña fecha y hora , fechahora , fechahora2 o datetimeoffset valor. Puede ser una expresión, una expresión de columna, una variable definida por el usuario o un literal de cadena.

Más "fecha-como"

También podría proporcionar un argumento más "similar a una fecha" haciendo algo como esto:

SELECT MONTH('September' + ' 01, 1900');

Resultado:

9

Día y año actual

O si prefiere usar el día y el año actuales, puede hacer algo como esto:

SELECT MONTH('September' + FORMAT(GETDATE(), 'd,y'));

Resultado:

9

Sin embargo, para que quede claro, a menos que el mes especificado sea el mismo que el mes actual, terminará con una fecha diferente a la fecha actual.

He aquí un ejemplo para ilustrar lo que quiero decir:

SELECT 
  FORMAT(GETDATE(), 'MMMM d, yyyy') AS [Today],
  'September' + FORMAT(GETDATE(), ' d, yyyy') AS [Modified],
  MONTH('September' + FORMAT(GETDATE(), ' d, yyyy')) AS [Month Number];

Resultado:

 +----------------+--------------------+----------------+
 | Today          | Modified           | Month Number   |
 |----------------+--------------------+----------------|
 | March 22, 2020 | September 22, 2020 | 9              |
 +----------------+--------------------+----------------+ 

Realicé esta consulta el 22 de marzo de 2020, pero la fecha de modificación es el 22 de septiembre de 2020.

Independientemente, se devuelve el número de mes correcto cuando usamos MONTH() .