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
lunes, 4 de abril de 2011
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
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
LENGUAJE
- Web oficial de JAVA en castellano (http://www.java.com/es/download/help/index.xml)
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
LENGUAJE
- Web oficial de PHP (http://www.php.net/)
- Foro en español de PHP (http://www.php-hispano.net/)
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/.
UTILIDADESphpMyEdit, genera código para ver tablas de MySql en PHP.
PHPExcel, clase para generar y leer archivos de Excel.
Suscribirse a:
Entradas (Atom)