miércoles, 13 de mayo de 2015

Pasar Datos de Prodecimiento Almacenado a una Tabla Temporal o Variable Tabla

Si un Procedimiento Almacenado devuelve como resultado un conjunto de registros obtenidos con SELECT, este resultado puede ser obtenido y utilizado dentro de otro procedimiento almacendado, para ello este resultado debe ser almacenado en una tabla temporal o una variable tabla que tenga la misma estructura de campos que el procedimiento almacenado a ejecutar devuelve.
A continuación se muestra un ejemplo de su uso. Espero les sirva.
--
--
---exec spr_ObtenerAgendaPorTipoContacto 2
-- Crear el Procedimiento almacenado
create procedure spr_ObtenerAgendaPorTipoContacto  
@Tipo varchar(2) 
as

 SELECT 1, 'VARGAS', 'DAVILA', 'CARLOS', '949685100', 'CE' -- Compañero Estudios
 UNION 
 SELECT 2, 'DURAND', 'ALVA', 'LUCIA', '949685002', 'CT' -- Compañero Trabajo
 UNION 
 SELECT 3, 'FLORES', 'CASTRO', 'CESAR', '949452200', 'CT' -- Compañero Trabajo
GO

-- CON TABLA TEMPORAL
CREATE TABLE #AgendaTemporal (
 Id INT, 
 ApePaterno VARCHAR(20), 
 ApeMaterno VARCHAR(20), 
 Nombres VARCHAR(30), 
 Telefono varchar(20),
 TipoContacto varchar(2)  
) -- crear tabla temporal

INSERT #AgendaTemporal (Id, ApePaterno, ApeMaterno, Nombres, Telefono, TipoContacto)
EXEC spr_ObtenerAgendaPorTipoContacto 'CT'

select Id, ApePaterno, ApeMaterno, Nombres, Telefono, TipoContacto 
from #AgendaTemporal

drop table #AgendaTemporal -- Eliminar la tabla temporal

-- CON VARIABLE TABLA
DECLARE @AgendaTemporal2 TABLE (Id INT, ApePaterno VARCHAR(20), 
 ApeMaterno VARCHAR(20), 
 Nombres VARCHAR(30), 
 Telefono varchar(20),
 TipoContacto varchar(2) 
) -- crear variable tabla

INSERT @AgendaTemporal2 (Id, ApePaterno, ApeMaterno, Nombres, Telefono, TipoContacto)
EXEC spr_ObtenerAgendaPorTipoContacto 'CE'

select Id, ApePaterno, ApeMaterno, Nombres, Telefono, TipoContacto 
from @AgendaTemporal2
--------------------------------
-------------------------------- 

Siempre es bueno mencionar las referencias de donde uno se guía para aprender, en este caso: https://fuentedeconocimientos.wordpress.com/2013/02/09/pasar-datos-de-procedimiento-almacenado-a-tabla-temporal/comment-page-1/
sql server
Posted by InfoTacticas Soluciones  |  No comments

5/13/2015 03:15:00 p. m. Share:

martes, 12 de mayo de 2015

En base a una fecha de un mes dado, obtener la fecha del ultimo día de ese mes - SQL Server

En base a una fecha de un mes dado, como por ejemplo el 11 de enero del 2015, deseamos obtener la fecha del último día de ese mes: 31/01/2015, para eso emplearemos el código SQL que se muestra a continuación
--
--
DECLARE @FechaInicioPeriodo datetime = convert(datetime, '11/01/2015', 103) 
(select dateadd(day,-1,left(convert(varchar(8),dateadd(month,1,@FechaInicioPeriodo),112),6)+'01'))
 

La fecha 11/01/2015 es convertida a datetime, con la estructura 103, a fin de que sea reconocida como una fecha en formato dd/mm/yyyy, tal como lo estamos ingresando, porque de otra manera seria tomada como el 01/11/2015 y nos devolvería como resultado el 30/11/2015, y no es el resultado que esperamos.
sql server
Posted by InfoTacticas Soluciones  |  No comments

5/12/2015 04:30:00 a. m. Share:

jueves, 7 de mayo de 2015

Tiempo Transcurrido entre FechaInicio y FechaFin en Años, Meses, Días y horas, minutos, segundos

En esta oportunidad les dejo el código en T-SQL para obtener el tiempo Transcurrido entre 2 fechas. Esta solución la copie del siguiente enlace y me sirvió mucho, fue la mas simple que encontré. https://social.msdn.microsoft.com/Forums/es-ES/c3830d57-7943-4172-816d-2852dc48a22b/como-obtener-el-tiempo-transcurrido-de-varias-fechas-horas-de-inicio-y-fechas-horas-fin-y-sumar-los?forum=sqlserveres
--
--
set dateformat dmy

declare @fechaInicio as datetime = '01/01/2014 02:00'
declare @fechaFin as datetime = '30/03/2015 08:00'
declare @fechaDiferencia as datetime = @fechaFin - @fechaInicio 
declare @difSegundos as bigint = DATEDIFF( SECOND, @fechaInicio, @fechaFin )

select @fechaInicio as fechaInicio, @fechaFin as fechaFin
, @fechaDiferencia as fechaResultado
--tiempo transcurrido en años, meses, días y en horas:minutos:segundos
, DATEDIFF( YEAR, '19000101', @fechaDiferencia ) as anios
, MONTH( @fechaDiferencia ) -1 as meses
, DAY( @fechaDiferencia ) -1 as dias
, CAST( @fechaDiferencia AS TIME ) as tiempo

El resultado de la consulta lo muestro en la siguiente imagem:

sql server
Posted by InfoTacticas Soluciones  |  No comments

5/07/2015 07:28:00 a. m. Share:

miércoles, 6 de mayo de 2015

Obtener el número de días de un mes dado en SQL Server

Para obtener el número de días del mes de una fecha determinada, una opción es:
  • De una fecha determinada, obtener el primer día de ese mes y con esa fecha se va a trabajar. Sumarle un mes a dicha fecha.
  • Encontrar la diferencia en días entre la fecha aumentada un mes y la fecha inicial.
  • El resultado es el número de días del mes de la fecha especificada.
set dateformat dmy -- para usar la fecha en formato dd/mm/yyyy

declare @fecha datetime
set @fecha = '31/03/2016'
-- Obtenemos el primer dia del mes de interés
declare @fecha_dia_uno date = DATEADD(day, -datepart(day, @fecha) +1, @fecha)

-- A la fecha del primero del mes le sumamos un mes
-- y luego especificamos la diferencia en días entre la fecha del primer dia aumentada un mes y la fecha del primer dia
-- el resultado es el número de dias del mes de la fecha inicial
select DATEDIFF(dd, @fecha_dia_uno, DATEADD(mm, 1, @fecha_dia_uno))

sql server
Posted by InfoTacticas Soluciones  |  No comments

5/06/2015 02:23:00 a. m. Share:

domingo, 5 de abril de 2015

Cómo insertar un salto de línea en Blogger (para plantillas que no permiten ver el vínculo a la entrada completa)

How to insert a jump break on Blogger, in templates ?

Accedemos al editor de entradas, escribimos nuestra entrada completa y marcamos la "zona de corte" con el icono "Salto de línea" donde queramos que finalice el resumen y después se muestre el vínculo de Más información o Leer Más o Leer post completo (u otro texto personalizado) que permita mostrar el contenido completo de nuestro post.
Cuando pulsamos en el icono salto de línea (marcado en la imagen anterior con el icono con una "hoja cortada en dos partes"), nos aparece la barra horizontal en la "zona de corte" donde deseamos crear el salto de línea.
Cuando publiquéis el post, se verá en la página principal lo que está escrito hasta la línea o salto, y justo donde está la línea aparecerá el texto Más información o Leer más. Sin embargo en ocasiones la entrada se muestra recortada pero no aparece el texto de Más información, en ese caso hay que acceder a la opción: Plantilla --> Editar HTML, tal como se ve en la siguiente imagen.
En el código que se muestra, debe estar presente el siguiente bloque de código:

  

Se trata de un etiqueta condicional que indica a Blogger "Si en el post de entrada hay un "hasJumpLink" o salto de línea. Para encontrarlo, usar  CTRL + F  para buscar el texto: hasJumpLink, Si este no se encuentra esa puede ser la razón por la que no nos aparece el texto de Más información en el post. En este caso algunas recomendaciones indican que se debe colocar el código de arriba antes de

blogger
Posted by InfoTacticas Soluciones  |  4 comments

4/05/2015 05:30:00 p. m. Share:
back to top