Entradas populares

lunes, 20 de diciembre de 2010

COMO MANEJAR FECHAS EN SQL SERVER

Bien ahora conocemos los tipos de datos de nuestro motor, pero la gran pregunta, ¿Cómo Guarda internamente Sql Server las Fechas? ¿Lo hace en formato MM/DD/YYY o lo hará en DD/MM/YYYY?, bueno lamento decirles que nuestro motor siempre guarda las fechas de una sola forma y no esta referida a ningún formato (Americano, Español, Japonés ).


Bueno ahora entonces tenemos un dilema, ya que cuando quiera hacer una consulta por ejemplo entre fechas deba primero saber que tipo de Formato usar (Americano, Español, etc) ya que no es lo mismo 10-11-2010 (donde 10 es el día y 01 el mes) a 10-11-2010 (Donde 10 es el mes y 01 el día).


Para nuestro ejemplo utilizaremos la Base de Datos Northwind que ya viene como ejemplo en nuestro Sql Server, de no tenerla favor de instalarla desde el instalador correspondiente.

/* Creamos un usuario donde su idioma predefinido es el Español */ 
sp_addlogin 'UserFechas','pepe','master','Español' 
/* vamos a darle acceso a nuestra Base de Datos Northwind */
use Northwind
GO
sp_grantdbaccess 'UserFechas' 
GO



Bien ahora usaremos la tabla Orders y haremos la consulta de fechas de dos formas distintas, la primera usando los formatos como la mayoría esta acostumbrado y la segunda utilizando el formato ANSI  que seria el correcto.



use northwind
go 
-- Opcion que estamos acostumbrados a usar
select count(*) from orders where orderdate >='01-08-1997' 
-- Opcion con Ansi
select count(*) from orders where orderdate >='19970801'

Bien ahora tenemos casi el 90% resuelto de los problemas más habituales con fechas, pero de todos modos no deberíamos dejar de ver las funciones que están asociadas con la manipulación de Fechas.
Función
Determinismo
DATEADD
Devuelve un valor datetime nuevo que se basa en la suma de un intervalo a la fecha especificada.
DATEDIFF
Devuelve el número de límites de fecha y hora que hay entre dos fechas especificadas.
DATENAME
Devuelve una cadena de caracteres que representa la parte de la fecha especificada de la fecha especificada.
DATEPART
Devuelve un entero que representa la parte de la fecha especificada de la fecha indicada..
DAY
Devuelve un entero que representa la parte del día de la fecha especificada.
GETDATE
Devuelve la fecha y hora actuales del sistema en el formato interno estándar de Microsoft® SQL Server™ para los valores datetime.
GETUTCDATE
Devuelve el valor de datetime que representa la hora UTC actual (Universal Coordinated Time u hora del meridiano de Greenwich). La hora UTC actual se deriva de la hora local actual y la configuración de zona horaria del sistema operativo del equipo en el que se ejecuta SQL Server.
MONTH
Devuelve un entero que representa el mes de una fecha especificada.
YEAR
Devuelve un entero que representa la parte de año de la fecha especificada.
En el siguiente Link. Existen varios ejemplos sencillos para comprender, un poco mas algunas consultas SQL.
Bueno, hasta la proxima.
"Si lo pueden soñar lo pueden lograr". (Gonzalo Cobo)

jueves, 16 de diciembre de 2010

ENVIO DE EMAILS CON C#, UTILIZANDO GMAIL

Hola, es la primera entrega que tengo para ustedes, lo que hace el script en c#, para probarlo en modo consola en .NET es enviar un correo electrónico utilizando el SMTP del Gmail y utilizando una credencial del mismo. bueno el script lo explica todo.


Podría utilizarse para enviar a los clientes o usuarios registrados en su base de datos, enviandole lo que ustedes deseen utilizando un email generico creado en gmail, puesto que necesitan tener el password del mismo.


Es muy sencillo, cualquier consulta o duda háganme saber.


Ahí les va el código en lo posible comentado, para su comprensión.


using System;
using System.Collections;
using System.Net;
using System.Net.Mail;
using System.Net.Mime;


public class EjemploCorreoGMail
{
    public static void Main()
    {
       //Se instancia el objeto de MailMessage
        System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();
      //El mail del destinatario.
        msg.To.Add("correo_destinatario@mail.com");
       //Quien lo envia, mail generico
        msg.From = new MailAddress("correo_origen@gmail.com", "Nombre_de_quien_lo_envia", System.Text.Encoding.UTF8);
        msg.Subject = "Asunto de prueba";
        msg.SubjectEncoding = System.Text.Encoding.UTF8;
        msg.Body = "Cuerpo del mensaje, envio por medio del host Gmail.. que haz dicho...";
        msg.BodyEncoding = System.Text.Encoding.UTF8;
        msg.IsBodyHtml = false;


        SmtpClient client = new SmtpClient();
     //Se agrega la credencial con el correo generico y su contraseña
        client.Credentials = new System.Net.NetworkCredential("correo_origen@gmail.com", "xxPasswordxx");
        client.Port = 587;
    //el host de Gmail
        client.Host = "smtp.gmail.com";
        client.EnableSsl = true;
        try
        {
            client.Send(msg);
        }
        catch (System.Net.Mail.SmtpException ex)
        {
         //Por si existe algun error.
            Console.WriteLine(ex.Message);
            Console.ReadLine();
        }
    }
}




=========================================================
Espero que sea de utilizadad, proximamente ire publicando mas script, gracias....


Atte. Lic. José Luis Aruquipa Hilari
DESARROLLO - ANALISIS DE SISTEMAS