jueves, febrero 28

Otra sobre como Personalizar una Fecha en MYSQL

Aunque ya habia publicado como personalizar una fecha en MYSQL, ahora presento esta version, en donde la salida es del tipo "Jueves 28 de Febrero de 2008"., puesto que la version anterior tambien agregaba la hora y minuto.

En este caso, de un subQuery se concatenan el dia en texto, el diaNumerico, el mes en Texto y el año, observese el subQuery:



SELECT
concat(t1.diaEnTexto, " ", t1.diaNumerico, " de ",t1.mesEnTexto, " de " , t1.elAnio
) as fechaEnTexto

FROM

(SELECT
EXTRACT(DAY FROM Orden_Compra.Fecha) as diaNumerico,
( CASE DAYOFWEEK(Orden_Compra.Fecha)
WHEN 1 THEN "Domingo"
WHEN 2 THEN "Lunes"
WHEN 3 THEN "Martes"
WHEN 4 THEN "Miercoles"
WHEN 5 THEN "Jueves"
WHEN 6 THEN "Viernes"
WHEN 7 THEN "Sabado"
ELSE ""
END) as diaEnTexto,

( CASE MONTH(Orden_Compra.Fecha)
WHEN 1 THEN "Enero"
WHEN 2 THEN "Febrero"
WHEN 3 THEN "Marzo"
WHEN 4 THEN "Abril"
WHEN 5 THEN "Mayo"
WHEN 6 THEN "Junio"
WHEN 7 THEN "Julio"
WHEN 8 THEN "Agosto"
WHEN 9 THEN "Septiembre"
WHEN 10 THEN "Octubre"
WHEN 11 THEN "Noviembre"
WHEN 12 THEN "Diciembre"
ELSE ""
END ) as mesEnTexto,

EXTRACT(YEAR FROM Orden_Compra.Fecha ) as elAnio

FROM Orden_Compra

WHERE
Orden_Compra.id = ? ) t1

viernes, febrero 22

Semana de Locura

Esta semana ha sido fatal, en mi trabajo todo mundo enfermo de gripa y tos, nadie se salvo, fui el que mas resisti al contagio, sin embargo fue imposible escapar, fue una emboscada natural, lo mas cruel es que lleve ese virus a Casa, asi que tambien mi hermosa hija y esposa enfermaron, ya me cuidare mas para no enfermar, pues asi enfermo no te puedes concentrar bien en este tipo de trabajos "Desarrollo de Software".

Tambien por lo mismo de la enfermedad, perdi tiempo en PSP, mi intencion era presentar el examen de Certificacion de PSP el lunes 25 de Febrero de 2006, incluso ya estaba programado, pero no se dieron las condiciones para ello, sin embargo tengo el proposito de prepararme por mi cuenta y presentarlo posteriormente.

Que bueno ke es viernes. mi gripa ha disminuido, Sophirita esta mejor y habra tiempo de recuperarse...

lunes, febrero 11

Sentencias IF Anidadas en MySql

Hoy voy a hablar sobre la sentencia IF de mysql, la cual resulta muy util en consultas, un ejemplo muy sencillo de usarla seria el siguiente:

Supongamos que tenemos la tabla resultados, y verificamos si el campo minimo es menor que 3, si es asi entonces Semaforo valdra "Rojo", de lo contrario valdra "Amarillo":

if(resultados.minimo < 3, "Rojo","Amarillo") as Semaforo

Es un if sencillo, la primer coma seria el THEN, la segunda coma indica el ELSE.

En cualquier lenguaje de Programacion, los if anidados son muy comunes y faciles de codificar, pero por que no hacerlo tambien en Mysql, si, si se puede, veamos el siguiente ejemplo:

Tomemos la misma tabla de nombre resultados, la cual contiene los siguientes datos:



resultados.resultado
meta.meta
meta.minimo
meta.satisfactorio
meta.sobresaliente

Ahora, vamos a usar sentencias IF anidadas para verificar en que rango de la meta cae resultados.resultado y poner una variable llamada semaforo para que nos indique rojo,amarillo o verde, esta variable la podemos usar ya sea para una Grafica o simplemente para indicara al usuario que el resultado esta en determinada luz, y pues quedaria asi:


if (resultados.resultado <=meta.minimo,"Rojo",

( if(resultado.valor between meta.minimo and meta.satisfactorio,"Amarillo","Verde"))

) as Semaforo

Si resultados.resultado <= meta.minimo, entonces semaforo Rojo y aqui entra el ELSE Si resultado.resultado esta entre minimo y satisfactorio entonces semaforo amarillo de lo contrario semaforo Verde. Listo, ya hicimos IF's anidados. Siguiente tema: Crear pivotes en mysql.

viernes, febrero 8

Javascript para formatear un numero a determinados decimales o bien con formato de moneda.

En ocasiones se nos presenta la necesidad de usar javascript para formatear un numero a determinados decimales, o bien con separadores de miles, buscando en el bendito Google, encontre este objeto creado en JavaScript, el cual es muy sencillo de usar, he aqui algunos ejemplos:

Numero: 85000

var numero = new oNumero(85000);
rango=numero.formato(2,true);

Salida = 85,000.00

var numero = new oNumero(85000);
rango=numero.formato(2,false);

Salida = 85000.00


function oNumero(numero)
{
//Propiedades
this.valor = numero || 0
this.dec = -1;
//Métodos
this.formato = numFormat;
this.ponValor = ponValor;
//Definición de los métodos
function ponValor(cad)
{
if (cad =='-' || cad=='+') return
if (cad.length ==0) return
if (cad.indexOf('.') >=0)
this.valor = parseFloat(cad);
else
this.valor = parseInt(cad);
}
function numFormat(dec, miles)
{
var num = this.valor, signo=3, expr;
var cad = ""+this.valor;
var ceros = "", pos, pdec, i;
for (i=0; i < dec; i++)
ceros += '0';
pos = cad.indexOf('.')
if (pos < 0)
cad = cad+"."+ceros;
else
{
pdec = cad.length - pos -1;
if (pdec <= dec)
{
for (i=0; i< (dec-pdec); i++)
cad += '0';
}
else
{
num = num*Math.pow(10, dec);
num = Math.round(num);
num = num/Math.pow(10, dec);
cad = new String(num);
}
}
pos = cad.indexOf('.')
if (pos < 0) pos = cad.lentgh
if (cad.substr(0,1)=='-' || cad.substr(0,1) == '+')
signo = 4;
if (miles && pos > signo)
do{
expr = /([+-]?\d)(\d{3}[\.\,]\d*)/
cad.match(expr)
cad=cad.replace(expr, RegExp.$1+','+RegExp.$2)
}
while (cad.indexOf(',') > signo)
if (dec<0) cad = cad.replace(/\./,'')
return cad;
}
}//Fin del objeto oNumero:

fuente

http://javascript.espaciolatino.com/scripts/formateanum.htm