lunes, 4 de abril de 2011

Calcular fecha teniendo como valor los segundos desde una fecha dada.

Cuando partimos de una fecha inicial y queremos obtener una fecha final sumándole sólo segundos, en Oracle no disponemos de una función tipo fechafinal(fechainicial, segundos). Para ello podemos utilizar la propiedad de incrementar una fecha a partir de las unidades en días.

Por ejemplo a partir de la fecha "01/01/2011" le queremos sumar dos días, para ello podemos hacer:


SELECT TO_DATE('01/01/2011', 'DD/MM/YYYY') + 2 FROM DUAL


El resultado es "03/01/2011", a la fecha de partida se le han sumado 2 días.

Debido a que la función de sumar sólo tiene en cuenta las unidades en días, para sumar segundos deberemos sumar la fracción de días que representan los segundos. Partiendo de que en un día hay 86400 segundos (60 segundos en un minuto * 60 minutos en una hora * 24 horas en un día es igual a 86400 segundos en un día).
La fracción a sumar será SEGUNDOS / 86400.

Por ejemplo a partir de la fecha "01/01/2011" le queremos sumar 5 minutos (300 segundos), para ello:

SELECT TO_DATE('01/01/2011', 'DD/MM/YYYY HH24:MI:SS') + (300/86400) FROM DUAL

El resultado es "01/01/2011 00:05:00".

A partir de la versión 9i existen dos nuevos tipos de datos INTERVAL DAY TO SECOND y INTERVAL YEAR TO MONTH. Con estos tipos de datos se consigue clarificar la lectura del dato.

El ejemplo anterior quedaría como :

SELECT TO_DATE('01/01/2011', 'DD/MM/YYYY HH24:MI:SS') + (INTERVAL '5' MINUTE) FROM DUAL

El resultado es  "01/01/2011 00:05:00".
 

INTERVAL DAY TO SECOND

Este tipo de dato permite definir intervalos de fecha de días a segundos (con decimales sólo para los segundos), mostrando un formato del tipo D H:M:S  (D día, H horas, M minutos, S segundos con fracción)

Ejemplos:

SELECT INTERVAL '1' SECOND FROM DUAL              Muestra ->      0  0:0:1.0
SELECT INTERVAL '70.01' SECOND FROM DUAL       Muestra ->      0  0:1:10.01
SELECT INTERVAL '130' MINUTE FROM DUAL          Muestra ->      0  2:10:0.0
SELECT INTERVAL '25' HOUR FROM DUAL               Muestra ->      1  1:0:0.0
SELECT INTERVAL '3' DAY FROM DUAL                   Muestra ->      3  0:0:0.0

También se puede operar con ellos:

SELECT SYSTIMESTAMP, SYSTIMESTAMP - INTERVAL '10' MINUTE FROM DUAL

SELECT TO CHAR(SYSDATE,'dd-mm-yyyy hh24:mi:ss'), TO_CHAR( SYSDATE - INTERVAL '15' MINUTE,'dd-mm-yyyy hh24:mi:ss') FROM DUAL

INTERVAL YEAR TO MONTH

Este tipo de dato permite definir intervalos de fecha de años a meses, mostrando un formato del tipo YY-MM  (YY años, MM meses).

Ejemplos:

SELECT INTERVAL '30' MONTH FROM DUAL            Muestra ->    2-6
SELECT INTERVAL '30' YEAR FROM DUAL               Muestra ->    30-0


martes, 15 de marzo de 2011

"cannot find symbol", error al compilar

Cuando empezamos a aprender Java un error muy común al compilar desde DOS es que nos encontramos con errores en la compilación y no sepamos como resolverlo. Por ejemplo un de ellos se produce cuando en una clase creamos un objecto a partir de otra clase.

Por ejemplo teniendo estas dos clases, una es Leer.java y la otra Leer3.java que crea el objeto de la case Leer.java:

//Clase Leer.java
import java.io.*;

import java.util.Scanner;

public class Leer{

public String Leer()
{

return porTeclado();

}


public String porTeclado()


{


Scanner leer = new Scanner(System.in);


String cadena = leer.next();


return cadena;


}


}



//Clase Leer3.java

public class Leer3


{


public static void main(String args[])


{


Leer vleer = new Leer();


String cadena = vleer.porTeclado();


System.out.println("Texto leido : " + cadena);


}


}



Partimos de que los dos archivos están guardados en el siguiente directorio:

C:\cursojava\modulor4\practica4\Leer.java

C:\cursojava\modulor4\practica4\Leer3.java



Al compilar las clases según se muestra a continuación, vemos que nos genera un error de "cannot find symbol", en la compilación de la clase Leer3.java, cuando la compilación de la clase Leer.java no ha generado ningún problema.

C:\cursojava>javac modulo4/practica4/Leer.java

C:\cursojava>javac modulo4/practica4/Leer3.java

modulo4\practica4\Leer3.java:6: cannot find symbol


symbol : class Leer


location: class Leer3


Leer vleer = new Leer();


^


modulo4\practica4\Leer3.java:6: cannot find symbol


symbol : class Leer


location: class Leer3


Leer vleer = new Leer();

^

2 errors



El problema es debido a que la clase Leer3 necesita crear el el objecto de la clase Leer pero el compilador desconoce donde se encuentra almacenada dicha clase. Para ello debemos agrupar estas dos clases en un paquete PACKAGE, esta clave la deberemos indicar al principio de cada una de las clases para evitar el error. Hay que tener en cuenta la clave del paquete debe mantener la misma estructura de directorios donde están almacenadas las clases.

Según hemos visto en el ejemplo las clases deberían quedar de la siguiente manera:

//Clase Leer.java

package modulo4.practica4;

import java.io.*;

import java.util.Scanner;


public class Leer{


public String Leer()

{

return porTeclado();

}

public String porTeclado()

{

Scanner leer = new Scanner(System.in);

String cadena = leer.next();

return cadena;

}

}



//Clase Leer3.java

package modulo4.practica4;

public class Leer3


{


public static void main(String args[])


{


Leer vleer = new Leer();


String cadena = vleer.porTeclado();


System.out.println("Texto leido : " + cadena);


}


}


NOTA: También afecta la configuración de la variable de entorno CLASSPATH que para este ejemplo su valor es: c:\Java\jdk1.6.0_23\lib;c:\cursojava

martes, 22 de febrero de 2011

Recursos interesantes de JAVA

Al igual que en el post de PHP también es interesante tenerlo para JAVA.

LENGUAJE

TUTORIALES
  • Un tutorial que es antiguo por está bastante claro. (unam.mx)

Recursos interesantes de PHP

Siempre que te enfrascas en el aprendizaje de una nueva tecnología como puede ser PHP empiezas a buscar y buscar información, documentación, ejemplos, vídeos, etc. Todo ello implica que con el tiempo se te acumula todo tipo de información y sobre todo recursos de la web, que a continuación he organizado para simplificar encontrarlos.

LENGUAJE

TUTORIALES

La web aulaformativa.com nos ofrece unos vídeos de su primer taller de php, realizado en 3 días. (instrucciones para descargar los vídeos)

Ejemplos de código de phpMyEdit en http://www.php-html-form.com/.

UTILIDADES

phpMyEdit, genera código para ver tablas de MySql en PHP.

PHPExcel, clase para generar y leer archivos de Excel.