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

Cómo formatear la fecha y la hora en SQL Server

En SQL Server, puede usar T-SQL FORMAT() para formatear la fecha y/o la hora. Simplemente proporcione dos argumentos; la fecha/hora y el formato a utilizar.

El formato se proporciona como una cadena de formato. Una cadena de formato define cómo debe formatearse la salida.

El FORMAT() La función también acepta un argumento de "cultura" opcional, que le permite especificar un idioma/configuración regional a la que deben adherirse los resultados.

Ejemplo básico

Este es un ejemplo básico del uso de FORMAT() función para formatear una fecha.

Fecha sin procesar

Primero, así es como se ve la fecha sin procesar. Si ejecutamos la siguiente sentencia:

SELECT GETDATE();

Obtenemos un resultado que se parece a esto:

2018-05-03 02:36:54.480

Fecha formateada

Ahora, podemos usar el FORMAT() función para formatear esa fecha y hora en nuestro formato preferido. Por ejemplo, podríamos hacer esto:

SELECT FORMAT( GETDATE(), 'D');

Lo que resulta en esto:

Thursday, May 3, 2018

Este es solo uno de los muchos formatos que podríamos elegir. Aquí hay otro:

SELECT FORMAT( GETDATE(), 'd');

Lo que resulta en esto:

5/3/2018

Los resultados reales variarán dependiendo del cultivo que se utilice. De forma predeterminada, se usa el idioma de la sesión actual, pero también puede anularlo con un tercer argumento ("cultura").

Establecer una configuración regional

Podríamos agregar un tercer argumento ("cultura") al código anterior para determinar la configuración regional que se usará para el formato de la fecha.

Así que podríamos hacer esto, por ejemplo:

SELECT FORMAT( GETDATE(), 'd', 'en-gb');

Lo que resulta en esto:

03/05/2018

Aquí hay otro ejemplo:

SELECT FORMAT( GETDATE(), 'd', 'zh-cn');

Lo que resulta en esto:

2018/5/3

Si la cultura no se proporciona el argumento, se utiliza el idioma de la sesión actual.

Aquí se explica cómo encontrar el idioma de la sesión actual y cómo configurarlo.

Tenga en cuenta que el idioma actual generalmente será el mismo que el idioma predeterminado del usuario, pero este podría no ser el caso si el usuario ha cambiado el idioma actual usando SET LANGUAGE . En cualquier caso, también puedes averiguar cuál es el idioma predeterminado.

Como puede imaginar, podría obtener resultados bastante diferentes según su idioma actual o el valor de cualquier argumento de "cultura". Consulte Cómo la configuración de idioma puede afectar los resultados de FORMAT() para obtener más ejemplos.

Extracción del mes/semana/año

Puedes usar el FORMAT() para devolver solo la parte del mes de la fecha, la semana o el año, según se requiera.

Tenga en cuenta que estos son sensibles a mayúsculas y minúsculas. Por ejemplo, MMM formatea el mes de manera diferente a mmm .

Mes

Código de ejemplo para devolver la parte del mes:

SELECT FORMAT( GETDATE(), 'MMM');

Resultado:

May

Año

Código de ejemplo para devolver la parte del año:

SELECT FORMAT( GETDATE(), 'yyyy');

Resultado:

2018

Día

Código de ejemplo para devolver la parte del día:

SELECT FORMAT( GETDATE(), 'dddd');

Resultado:

Thursday

Extracción del tiempo

También puede utilizar el FORMAT() función para devolver la hora en un formato específico.

He aquí un ejemplo:

SELECT FORMAT( GETDATE(), 'hh.mm');

Resultado:

03.37

El designador AM/PM

También puede agregar tt para incluir el designador AM/PM:

SELECT FORMAT( GETDATE(), 'hh.mm tt');

Resultado:

03.37 AM

Combinar cadenas de formato

También puede combinar estas cadenas de formato para proporcionar su propio formato de fecha personalizado. Ejemplo:

SELECT FORMAT( GETDATE(), 'hh.mm tt dddd, dd MMMM, yyyy');

Resultado:

03.41 AM Thursday, 03 May, 2018

Referencia de especificadores de formato de fecha y hora

Los siguientes artículos contienen todos los especificadores de formato de fecha y hora que se pueden usar con FORMAT() función en SQL Server, junto con ejemplos de T-SQL:

  • Cadenas de formato de fecha y hora estándar
  • Cadenas de formato de fecha y hora personalizado

Estos son los mismos especificadores de formato de fecha y hora que son compatibles con .NET Framework (el FORMAT() función se basa en .NET Framework).

Referencia de especificadores de formato numérico

Los siguientes artículos contienen todos los especificadores de formato numérico que puede usar con FORMAT() función (es decir, para formatear números):

  • Cadenas de formato numérico estándar
  • Cadenas de formato numérico personalizado

Estos son los mismos especificadores de formato numérico que son compatibles con .NET Framework.

Otras funciones de fecha

T-SQL también incluye un montón de otras funciones que lo ayudan a extraer partes de las fechas. Estos incluyen funciones como DAY() , MONTH() , YEAR() , DATEPART() y DATENAME() .