jueves, 10 de marzo de 2022

Microsoft.Exchange.WebServices.Data -- The underlying connection was closed

 Error al usar Microsoft.Exchange.WebServices.Data para conectarme a Office 365 Outlook y extraer correos electrónicos y sus archivos adjuntos.


Solucion:

Office365 requiere que use TLS 1.2 si el servidor en el que lo está ejecutando ejecuta una versión anterior de .Net framework




System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;

se asegurará de que su código siempre use TLS 1.2 (siempre y cuando el framework no sea realmente antiguo)


miércoles, 2 de marzo de 2022

Obtener días del mes SQL

 Con la siguiente consulta te permite obtener una lista de los dias de un mes, pide como parametros de entrada el mes y el año

declare @MES INT
DECLARE @AÑO INT
DECLARE @FechaInicio date
DECLARE @FechaFin date


SET @MES = 2
SET @AÑO = 2022

 SELECT @FechaInicio = CONVERT(DATE,CONVERT(NVARCHAR,@AÑO)+'-'+CONVERT(NVARCHAR,@MES)+'-01')

select @FechaFin = EOMONTH(@FechaInicio)

 
--Aquí creamos la variable tabla con los valores
DECLARE @DiaMes TABLE ([Fecha] DATE,[Año] int,[Mes] int,[Dia] int,[noDia] int, [dsDia] nvarchar(50))

    WHILE(@FechaInicio<=@FechaFin) 
        BEGIN   
            INSERT @DiaMes([Fecha],[Año],[Mes] ,[Dia] ,[noDia], [dsDia] )
            SELECT  @FechaInicio, YEAR(@FechaInicio), MONTH(@FechaInicio), 
DAY(@FechaInicio),DATEPART(weekday,@FechaInicio),(case DATEPART(dw,@FechaInicio) when 2 
then 'Lunes' when 3 then 'Martes' when 4 then 'Miércoles' when 5 then 'Jueves' when 6
 then 'Viernes' when 7 then 'Sábado' when 1 then 'Domingo' end
            SET @FechaInicio = DATEADD(DD,1,@FechaInicio)
        END
select * from @DiaMes

Resultado:



Obtener Descripcion de dia sql

 De esta forma podrías obtener el nombre del día de la semana pero lo devolvería en inglés.

SELECT DATENAME(weekday, getdate()) AS nombreDiaSemana;

Por lo tanto, lo más recomendable sería traer el número del día de la semana y mediante el uso de casos ir determinando el nombre del día de la semana.


SELECT (case DATEPART(dw,getdate()when 2 then 'Lunes' when 3 then 'Martes' when 4 then 'Miércoles' when 5 then 'Jueves' when 6 then 'Viernes' when 7 then 'Sábado' when 1 then 'Domingo' endAS nombreDiaSemana;