By: Jeffrey Yao | Updated: 2019-08-06 | Comments (3) | Related: More > Dates
Problem
desde SQL Server 2012, tenemos una nueva función llamada format(), es muy potente en el formato de valores DateTime y numéricos, ¿cuáles son algunos buenos usos de esta función para ser utilizado en el trabajo diario de DBA?
Solution
la función SQL Server T-SQL FORMAT() es en esencia una función de sistema de tipo CLR,y como tal, la .,Se aplican reglas de formato de red a esta función. Esta función devuelve un valor nvarchar (o valor null).
en mi trabajo diario de DBA, esta función proporciona mucha comodidad que otros necesitan algún desagradable trabajo de conversión de T-SQL y manipulación de cadenas para obtener el formatsI necesario.,th>EnrollDate
Figura 1 – Informe
Asumir mi tabla de origen de datos y es como el siguiente:
Si queremos obtener los datos muestran como en el , tenemos que calcular cual es una columna calculada en función de la columna.,/div>
pero para deshacerse de la ambigüedad, podemos usar la función FORMAT() de la siguiente manera:
declare @dt date='2019-June-08';select FORMAT(@dt, 'ddd') -- returns Sat
así, para nuestro ejemplo mencionado anteriormente, podemos usar la siguiente consulta para obtener el resultado deseado:
select EnrollDate, WeekDay=format(EnrollDate, 'ddd'), NewMembersfrom tempdb.dbo.NewAccount;
s:
use el formato SQL Server para obtener varios formatos de visualización numéricos
hay muchos requisitos sobre cómo se muestran los datos numéricos, como un separador de mil cada 3 dígitos, un signo de porcentaje, un prefijo de moneda o un formato diferente cuando se encuentra un valor menos., La siguiente tabla enumera algunos de los formatos de valores numéricos más utilizados.
un uso práctico del formato se muestra en el siguiente ejemplo, es decir, previamente cuando necesito verificar los recuentos de filas para las tablas en una base de datos, me parece muy inconveniente calcular qué números muy altos son sin el separador de Comas, especialmente cuando tiene cientos de millones de filas o más. El siguiente código enumera las filas de cada tabla en la base de datos .
la columna tiene una coma por cada 3 dígitos, lo que hace que la lectura sea mucho más fácil que la columna.,
utilice el formato de SQL Server para mostrar la duración de la ejecución de trabajos del agente de SQL Server
SQL Server job history tabledbo.sysjobhistory tiene una columna llamada como se muestra a continuación:
Esta es una columna entera, cuando necesito generar un informe, realmente quiero que este sea el formato HH:MM:SS, por ejemplo si run_duration es 1, Quiero que sea 00:00: 01,más ejemplos se enumeran en la siguiente tabla.,
Run_value | Espera que el Formato de la Pantalla |
---|---|
12 | 00:00:12 |
123 | 00:01:23 |
1234 | 00:12:34 |
12345 | 01:23:45 |
123456 | 12:34:56 |
251234 | 1d+01:12:34 |
Entonces, ¿cómo podemos lograr esto?
el truco aquí es que usaré una función no documentada pero simple en msdbdatabase, dbo.,agent_datetime, para componer un valor datetime ingresando un valor ficticio, como 20000101, para el parámetro @date y usar la columna para el parámetro @time, y luego usar FORMAT () para devolver el resultado con formato HH:MM:SS.
para ilustrar, crearé una tabla y la rellenaré con algunos datos simulando la columna en dbo.sysjobhistory table (en inglés).
con el siguiente código, puedo convertir el valor de hhmmssint al valor de cadena HH:MM: SS.,
el resultado es el siguiente, exactamente lo que quiero:
Summary
en este consejo, hemos revisado la función Format() introducida en SQL Server 2012, y enumeramos algunos ejemplos prácticos que de otro modo son difíciles de implementar. La función proporciona comodidad para el trabajo diario del informe de DBA y cuando se usa correctamente, la función ayuda a hacer que el código sea conciso,fácil de entender y simple de mantener.
no comenté sobre el parámetro culture utilizado en la función theformat ()., Este parámetro de cultura puede ser muy útil en algunos trabajos de formato relacionados con la cultura, como el signo de moneda, el nombre del día de la semana, el formato de fecha (es decir, Año/Mes/Día o Mes/Día/Año, etc.).). En algunas empresas con oficinas en todo el mundo, podemos construir algunas consultas que generarán resultados compatibles con la cultura.
próximos pasos
Puede leer algunos otros buenos consejos sobre MSSQLTips.com hablando del mismo tema.
Por favor, comparta sus propios hallazgos o el uso creativo de esta función.,
- formatear las fechas de SQL Server con la función de formato
- nuevo formato y funciones CONCAT en SQL Server 2012
- función SQL Server para convertir la fecha entera al formato datetime
También hay un artículo muy interesante que discute algunas deficiencias de la función Format ().,
Última actualización: 2019-08-06
Sobre el autor
- Más consejos para desarrolladores de bases de datos…